Afisare categorii sau subcategorii cu nume și descriere în category.php
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)
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
..)
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!

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/
