WordPress: sidebar contestuali per categoria usando archive.php

Problema: visualizzare sidebar contestuali per le categorie figlie (descendant) di una categoria madre utilizzando un solo file del tema archive.php (vedere Template Hierarchy per conoscere i tipi e le funzioni di archive.php e degli altri file di un tema WordPress).

Difficoltà: se le categorie figlie sono molte non è consigliato creare un file del tema che usiamo, (es. category-nomecategoria.php) per ognuna, si avrebbe un numero elevato di file per ogni categoria rendendo troppo complessa la struttura del nostro tema.

Soluzione: il metodo più semplice, amio avviso, per richiamare una o più sidebar contestuali per le categorie figlie consiste nell’usare il file del tema archive.php, usato solitamente come template di default per mostrare un listato di post per categoria.

Per la categoria madre la soluzione più semplice è creare un file nel nostro tema chiamato “category-nomecategoriamadre.php” e un file “sidebar-nomecategoriamadre.php”, nel file category-nomecategoriamadre.php per richiamare la sidebar corretta basterà inserire:

<?php get_sidebar('nomecategoriamadre'); ?>

Per i listati che aggregano i post delle categorie figlie, sempre che siano molte e dunque non sia conveniente creare tanti template e sidebar quante sono le categorie, possiamo modificare archive.php. Supponendo di voler visualizzare la stessa sidebar personalizzata per la categoria madre anche per le categorie figlie della categoria madre con ID 3426 dovremo aggiungere ad archive.php il codice seguente:

<?php if(post_is_in_descendant_category('3426')) get_sidebar('nomecategoriamadre');
else get_sidebar();?>

che in linguaggio umano si traduce in “se sto visualizzando i post delle categorie figlie (descendant) della categoria madre 3426 allora carico la sidebar contestuale ‘nomecategoriamadre’ (cioè il file “sidebar-nomecategoriamadre.php”) in tutti gli altri casi carico la sidebar generica.

Se volete approfondire il discorso sulle sidebar contestuali per post e categorie in WordPress rimando all’ottima spiegazione di Justin Tadlock “Sidebars in WordPress” che è una sorta di Bibbia per capire come realizzare delle sidebar personalizzate modificando functions.php e altri file del proprio tema.