Mostrare categorie e sottocategorie con nome e descrizione in category.php
Ho il seguente problema per un mio cliente. Qualcuno può suggerire una possibile soluzione?
Questo sito web ha Categorie e Sottocategorie
Cat1
-Subcat1
-Subcat2
-Subcat3
Cat2
-Subcat1
-Subcat2
-Subcat3
CIÒ DI CUI HO BISOGNO:
- Quando clicco su Cat1 o Cat2, ho bisogno di visualizzare qualcosa del genere:
- Ripetere questa azione finché la categoria e la sottocategoria hanno post! (importante)
Dopo aver cliccato su queste sottocategorie, devo essere in grado di generare una pagina con tutti i post di queste sottocategorie.
PS: Sarebbe bello se potessi spiegarmi come fare. E come posso inserire le variabili nel DIV del mio category.php (get_the_title
; Get_the desciption..)

Da quello che ho capito, c'è una lista di categorie genitore e le sottocategorie, che funzionano come un menu. Per il tuo primo screenshot:
Cat1 -Subcat1 -Subcat2 -Subcat3
Cat2 -Subcat1 -Subcat2 -Subcat3
Assumendo che hai solo due livelli di categorie, useresti questo codice per mostrare le tue categorie. Nota che puoi usarlo al di fuori del loop:
<ul class="category-sidebar">
<?php
$get_parent_cats = array(
'parent' => '0' //ottieni solo le categorie di livello superiore
);
$all_categories = get_categories( $get_parent_cats ); //ottieni le categorie genitore
foreach( $all_categories as $single_category ){
//per ogni categoria, ottieni l'ID
$catID = $single_category->cat_ID;
echo '<li><a href=" ' . get_category_link( $catID ) . ' ">' . $single_category->name . '</a>'; //nome e link della categoria
$get_children_cats = array(
'child_of' => $catID //ottieni le sottocategorie di questo genitore usando la variabile catID
);
$child_cats = get_categories( $get_children_cats ); //ottieni le sottocategorie della categoria genitore
echo '<ul class="children">';
foreach( $child_cats as $child_cat ){
//per ogni sottocategoria, ottieni l'ID
$childID = $child_cat->cat_ID;
//per ogni sottocategoria, mostra il link e il nome
echo '<a href=" ' . get_category_link( $childID ) . ' ">' . $child_cat->name . '</a>';
}
echo '</ul></li>';
} //fine della logica delle categorie ?>
</ul><!--fine di category-sidebar-->
Ora per il tuo secondo screenshot, presumo che quando clicchi su una categoria genitore dal menu sopra, mostrerà una pagina come quella con ogni sottocategoria e la sua descrizione.
Fai riferimento al tutorial che ho lasciato nei commenti per usare i condizionali in category.php, fondamentalmente quello che farai nell'archive è verificare se sta caricando una categoria genitore o una sottocategoria. Se è una sottocategoria, mostra un loop di post, se è un genitore, mostra la pagina delle sottocategorie con le descrizioni. Ecco come apparirebbe il codice per le sottocategorie e le loro descrizioni nel loop:
<?php
//per questa categoria in una pagina archive, ottieni l'ID
$thisID = get_query_var('cat');
$get_children_cats = array(
'child_of' => $thisID //ottieni le sottocategorie di questo genitore usando la variabile thisID
);
$child_cats = get_categories( $get_children_cats ); //ottieni le sottocategorie di questa categoria genitore
foreach( $child_cats as $child_cat ){
//per ogni sottocategoria, ottieni l'ID
$childID = $child_cat->cat_ID;
//per ogni sottocategoria, mostra il link, il nome e la descrizione
echo '<div class="child-wrap"><h2><a href=" ' . get_category_link( $childID ) . ' ">' . $child_cat->name . '</a></h2><br/>';
echo '<p>' . $child_cat->category_description . '</p></div>';
} //fine della logica delle categorie ?>
Mi rendo conto che è molto codice ma sembra che tu stia chiedendo di fare più cose, l'unico compito che devi fare tu è far sì che l'archive mostri la lista di post o la pagina nel secondo screenshot. Spero che questo ti aiuti meglio delle risorse nei commenti che ho fornito prima. Buona fortuna!

Ho anche scritto un tutorial su questo argomento. Dai un'occhiata https://www.cloudways.com/blog/get-categories-and-subcategories-in-wordpress/
