Afisare categorii sau subcategorii cu nume și descriere în category.php

15 sept. 2014, 22:25:02
Vizualizări: 15.1K
Voturi: 1

Am următoarea problemă pentru clientul meu. Poate cineva să sugereze o soluție posibilă?

Acest website are Categorii și Subcategorii

Cat1
-Subcat1  
-Subcat2
-Subcat3

Cat2  
-Subcat1
-Subcat2  
-Subcat3

CE AM NEVOIE:

  • Când dau click pe Cat1 sau Cat2, vreau să afișez ceva de genul:
  • Repetă această acțiune atât timp cât categoria și subcategoria au postări! (important)

Ar trebui să arate astfel

După click pe aceste subcategorii, trebuie să pot genera o pagină cu toate postările din acea subcategorie.

PS: Ar fi grozav dacă mi-ai putea spune cum să fac asta. Și cum pot pune variabilele în DIV-ul din category.php (get_the_title; get_the_description..)

3
Comentarii

Deci vrei ca categoria părinte (Cat1/Cat2) să te ducă la o pagină ca în captura de ecran de mai sus, și abia când se face clic pe o subcategorie, să mergi la o listă de articole? Am înțeles corect? Poți edita fișierul category.php astfel încât să nu folosească get_template_part pentru a încărca o buclă și să folosească în schimb un fișier personalizat. Folosește o instrucțiune if care va încărca bucla doar dacă este o subcategorie. Asta ar putea ajuta: http://rachievee.com/2014/09/06/wp-tutorial-how-to-apply-a-template-to-subcategories/

RachieVee RachieVee
16 sept. 2014 22:49:41

Încearcă și acest subiect pentru a lista subcategoriile sub categoriile părinte: http://wordpress.stackexchange.com/questions/13485/list-all-subcategories-from-category

RachieVee RachieVee
16 sept. 2014 22:59:16

A fost rezolvată această întrebare? Dacă da, te rog acceptă răspunsul sau postează și acceptă un răspuns propriu, astfel încât să putem menține site-ul ordonat. Mulțumesc.

Andy Macaulay-Brook Andy Macaulay-Brook
8 aug. 2016 00:09:30
Toate răspunsurile la întrebare 1
1

Din ceea ce am înțeles, există o listă de categorii principale și subcategorii, care sunt ca un meniu. Pentru prima ta captură de ecran:

Cat1 -Subcat1 -Subcat2 -Subcat3

Cat2 -Subcat1 -Subcat2 -Subcat3

Presupunând că ai doar două niveluri de categorii, ai putea folosi acest cod pentru a afișa categoriile tale. Reține că poți folosi acest cod în afara loop-ului:

<ul class="category-sidebar">   
    <?php 
        $get_parent_cats = array(
            'parent' => '0' //obține doar categoriile de nivel superior
        ); 

        $all_categories = get_categories( $get_parent_cats ); //obține categoriile principale

        foreach( $all_categories as $single_category ){
            //pentru fiecare categorie, obține ID-ul
            $catID = $single_category->cat_ID;

            echo '<li><a href=" ' . get_category_link( $catID ) . ' ">' . $single_category->name . '</a>'; //numele și link-ul categoriei
            $get_children_cats = array(
                'child_of' => $catID //obține subcategoriile acestei categorii folosind variabila catID definită mai devreme
            );

            $child_cats = get_categories( $get_children_cats ); //obține subcategoriile categoriei principale
            echo '<ul class="children">';
                foreach( $child_cats as $child_cat ){
                    //pentru fiecare subcategorie, obține ID-ul
                    $childID = $child_cat->cat_ID;

                    //pentru fiecare subcategorie, afișează link-ul și numele
                    echo '<a href=" ' . get_category_link( $childID ) . ' ">' . $child_cat->name . '</a>';

                }
            echo '</ul></li>';
        } //sfârșitul logicii categoriilor ?>
</ul><!--sfârșitul category-sidebar-->

Acum, pentru a doua ta captură de ecran, presupun că atunci când dai clic pe o categorie principală din meniul de mai sus, se va afișa o pagină asemănătoare cu fiecare subcategorie și descrierea ei.

Consultă tutorialul pe care l-am lăsat în comentarii pentru a folosi condiționale în category.php. Practic, ceea ce vei face în arhivă este să verifici dacă se încarcă o categorie principală sau o subcategorie. Dacă este o subcategorie, afișează un loop de articole; dacă este o categorie principală, afișează pagina cu subcategorii și descrieri. Iată cum ar arăta codul pentru subcategorii și descrierile lor în loop:

       <?php 
        //pentru această categorie pe o pagină de arhivă, obține ID-ul
        $thisID = get_query_var('cat');

        $get_children_cats = array(
            'child_of' => $thisID //obține subcategoriile acestei categorii folosind variabila thisID definită mai devreme
        );

        $child_cats = get_categories( $get_children_cats ); //obține subcategoriile acestei categorii principale

        foreach( $child_cats as $child_cat ){
            //pentru fiecare subcategorie, obține ID-ul
            $childID = $child_cat->cat_ID;

            //pentru fiecare subcategorie, afișează link-ul, numele și descrierea
            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>';
        } //sfârșitul logicii categoriilor ?>

Îmi dau seama că este mult cod, dar se pare că ceri să faci mai multe lucruri. Singura sarcină pe care trebuie să o rezolvi singur este să faci ca arhiva să afișeze fie lista de articole, fie pagina din a doua captură de ecran. Sper că acest lucru te ajută mai mult decât resursele din comentariile pe care le-am furnizat anterior. Mult succes!

17 sept. 2014 19:37:11
Comentarii

Am scris și un tutorial despre acest subiect. Te rog să arunci o privire https://www.cloudways.com/blog/get-categories-and-subcategories-in-wordpress/

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