Mostrar categorías o subcategorías con nombre y descripción en category.php
Tengo el siguiente problema para mi cliente. ¿Alguien puede sugerir una posible solución?
Este sitio web tiene Categorías y Subcategorías
Cat1
-Subcat1
-Subcat2
-Subcat3
Cat2
-Subcat1
-Subcat2
-Subcat3
LO QUE NECESITO ES:
- Cuando hago clic en Cat1 o Cat2, necesito mostrar algo como esto:
- Repetir esta acción mientras la categoría y subcategoría tengan posts (importante)
Después de hacer clic en estas subcategorías, debo poder generar una página con todos los posts de esa subcategoría.
PD: Sería genial si me pueden decir cómo hacer esto. Y cómo puedo poner las variables en el DIV de mi category.php (get_the_title
; Get_the_description..)

Por lo que entiendo, hay una lista de categorías principales y las subcategorías, que actúan como un menú. Para tu primera captura de pantalla:
Cat1 -Subcat1 -Subcat2 -Subcat3
Cat2 -Subcat1 -Subcat2 -Subcat3
Asumiendo que solo tienes dos niveles de categorías, usarías esto para mostrar tus categorías. Nota que puedes usar esto fuera del loop:
<ul class="category-sidebar">
<?php
$get_parent_cats = array(
'parent' => '0' //obtener solo categorías de nivel superior
);
$all_categories = get_categories( $get_parent_cats );//obtener categorías principales
foreach( $all_categories as $single_category ){
//para cada categoría, obtener el ID
$catID = $single_category->cat_ID;
echo '<li><a href=" ' . get_category_link( $catID ) . ' ">' . $single_category->name . '</a>'; //nombre y enlace de la categoría
$get_children_cats = array(
'child_of' => $catID //obtener hijos de este padre usando la variable catID de antes
);
$child_cats = get_categories( $get_children_cats );//obtener hijos de la categoría padre
echo '<ul class="children">';
foreach( $child_cats as $child_cat ){
//para cada categoría hija, obtener el ID
$childID = $child_cat->cat_ID;
//para cada categoría hija, darnos el enlace y nombre
echo '<a href=" ' . get_category_link( $childID ) . ' ">' . $child_cat->name . '</a>';
}
echo '</ul></li>';
} //fin de la lógica de categorías ?>
</ul><!--fin de category-sidebar-->
Ahora para tu segunda captura de pantalla, asumo que al hacer clic en una categoría principal del menú anterior, mostrará una página como esa con cada subcategoría y su descripción.
Consulta el tutorial que dejé en los comentarios para usar condicionales en category.php, básicamente lo que harás en el archivo es verificar si se está cargando una categoría padre o una subcategoría. Si es una subcategoría, muestra un loop de publicaciones; si es una categoría principal, muestra la página de subcategorías con descripciones. Así se vería el código para las subcategorías y sus descripciones dentro del loop:
<?php
//para esta categoría en una página de archivo, obtener el ID
$thisID = get_query_var('cat');
$get_children_cats = array(
'child_of' => $thisID //obtener hijos de este padre usando la variable thisID de antes
);
$child_cats = get_categories( $get_children_cats );//obtener hijos de esta categoría padre
foreach( $child_cats as $child_cat ){
//para cada categoría hija, obtener el ID
$childID = $child_cat->cat_ID;
//para cada categoría hija, darnos el enlace, nombre y descripción
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>';
} //fin de la lógica de categorías ?>
Me doy cuenta de que esto es mucho código, pero parece que estás pidiendo hacer múltiples cosas, la única tarea en la que tienes que trabajar tú mismo es hacer que el archivo muestre la lista de publicaciones o tu página en la segunda captura de pantalla. Espero que esto ayude más que los recursos en los comentarios que proporcioné antes. ¡Buena suerte!

También he escrito un tutorial sobre esto. Por favor, echa un vistazo https://www.cloudways.com/blog/get-categories-and-subcategories-in-wordpress/
