web-dev-qa-db-fra.com

Afficher les catégories ou sous-catégories avec le nom et la description dans category.php

J'ai le problème suivant pour mon client. Certains peuvent-ils suggérer une solution possible à ce problème?

Ce site a des catégories et des sous-catégories

Cat1
-Subcat1
-Subcat2
-Subcat3

Cat2
-Subcat1
-Subcat2
-Subcat3

CE DONT J'AI BESOIN:

  • Lorsque je clique sur Cat1 ou Cat2, je dois afficher quelque chose comme ça:
  • Répétez cette action tant que la catégorie et la sous-catégorie ont été publiées! (important)

It should looks like this

Après avoir cliqué sur ces sous-catégories, je dois être capable de générer une page avec toutes les publications de cette sous-catégorie.

PS: Ce serait bien si vous pouviez me dire comment je pourrais le faire. Et comment je peux mettre la variable dans la DIV de mon category.php (get_the_title; Get_the desciption ..)

1
Marie_Fleischer

D'après ce que j'ai compris, il existe une liste de catégories de parents et de sous-catégories, qui sont comme un menu. Pour votre première capture d'écran:

Cat1 -Subcat1 -Subcat2 -Subcat3

Cat2 -Subcat1 -Subcat2 -Subcat3

En supposant que vous n’ayez que deux niveaux de catégories, vous l’utiliserez pour afficher vos catégories. Notez que vous pouvez utiliser ceci en dehors de la boucle:

<ul class="category-sidebar">   
    <?php 
        $get_parent_cats = array(
            'parent' => '0' //get top level categories only
        ); 

        $all_categories = get_categories( $get_parent_cats );//get parent categories 

        foreach( $all_categories as $single_category ){
            //for each category, get the ID
            $catID = $single_category->cat_ID;

            echo '<li><a href=" ' . get_category_link( $catID ) . ' ">' . $single_category->name . '</a>'; //category name & link
            $get_children_cats = array(
                'child_of' => $catID //get children of this parent using the catID variable from earlier
            );

            $child_cats = get_categories( $get_children_cats );//get children of parent category
            echo '<ul class="children">';
                foreach( $child_cats as $child_cat ){
                    //for each child category, get the ID
                    $childID = $child_cat->cat_ID;

                    //for each child category, give us the link and name
                    echo '<a href=" ' . get_category_link( $childID ) . ' ">' . $child_cat->name . '</a>';

                }
            echo '</ul></li>';
        } //end of categories logic ?>
</ul><!--end of category-sidebar-->

Maintenant, pour votre deuxième capture d’écran, je suppose que lorsque vous cliquez sur une catégorie parente dans le menu ci-dessus, une page comme celle-ci apparaît avec chaque sous-catégorie et sa description.

Reportez-vous au tutoriel que j'ai laissé dans les commentaires pour utiliser des conditions dans le fichier category.php. Ce que vous ferez dans l'archive consiste essentiellement à vérifier si une catégorie parent est en cours de chargement ou une sous-catégorie. S'il s'agit d'une sous-catégorie, affichez une boucle de publications, s'il s'agit d'un parent, affichez les sous-catégories avec la page de description. Voici à quoi ressemblerait le code des sous-catégories et leurs descriptions dans la boucle:

       <?php 
        //for this category on an archive page, get the ID
        $thisID = get_query_var('cat');

        $get_children_cats = array(
            'child_of' => $thisID //get children of this parent using the thisID variable from earlier
        );

        $child_cats = get_categories( $get_children_cats );//get children of this parent category

        foreach( $child_cats as $child_cat ){
            //for each child category, get the ID
            $childID = $child_cat->cat_ID;

            //for each child category, give us the link and name and description
            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>';
        } //end of categories logic ?>

Je sais que cela fait beaucoup de code, mais il semblerait que vous demandiez de faire plusieurs choses. La seule tâche à laquelle vous devez travailler est de faire en sorte que l'archive affiche la liste des publications ou votre page dans la deuxième capture d'écran. J'espère que cela aide mieux que les ressources dans les commentaires que j'avais fournis plus tôt. Bonne chance!

2
RachieVee