Mostrar categorías o subcategorías con nombre y descripción en category.php

15 sept 2014, 22:25:02
Vistas: 15.1K
Votos: 1

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)

Debería verse así

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..)

3
Comentarios

¿Entonces quieres que la categoría padre (Cat1/Cat2) te lleve a una página como la de la captura de pantalla anterior, y solo al hacer clic en una subcategoría se muestre una lista de posts? ¿Lo estoy entendiendo correctamente? Puedes editar el category.php para que no use get_template_part para cargar un loop y en su lugar usar un archivo personalizado. Usa una declaración condicional if que solo cargue el loop si es una subcategoría. Esto podría ayudarte: http://rachievee.com/2014/09/06/wp-tutorial-how-to-apply-a-template-to-subcategories/

RachieVee RachieVee
16 sept 2014 22:49:41

También prueba este tema para listar subcategorías debajo de las categorías padres: http://wordpress.stackexchange.com/questions/13485/list-all-subcategories-from-category

RachieVee RachieVee
16 sept 2014 22:59:16

¿Se resolvió esta pregunta satisfactoriamente? Si es así, por favor acepta la respuesta, o publica y acepta una respuesta tu mismo, para que podamos mantener el sitio ordenado. Gracias.

Andy Macaulay-Brook Andy Macaulay-Brook
8 ago 2016 00:09:30
Todas las respuestas a la pregunta 1
1

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!

17 sept 2014 19:37:11
Comentarios

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

Owais Alam Owais Alam
11 oct 2017 12:09:04