Obține categoriile copil ale categoriei părinte
Încerc să obțin toate categoriile copil pentru a le afișa în această buclă, dar am dificultăți cu codul. Iată ce am până acum.
<?php $args=array('orderby' => 'name', 'order' => 'ASC');
$categories=get_categories($args);
foreach ($categories as $cat) { ?>
<dt><a href="#" class="customer-acquisitiontop" id="<?php echo $cat->slug; ?>" data-filter=".<?php echo $cat->slug; ?>"><h2><?= $cat->cat_name; ?></h2></a></dt>
<dd><div class="services">
<?= $categories=get_categories('parent'); ?> /*Aici ar trebui să fie categoriile copil ale categoriei părinte */
</div>
</dd>
<?php } ?>
Orice ajutor ar fi binevenit
Nu poți trece pur și simplu șirul "parent" la get_categories. Trebuie să transmiți ID-ul părintelui.
$categories=get_categories(
array( 'parent' => $cat->cat_ID )
);
Observă că există doi parametri similari dar nu egali pentru "get child" pe care îi poți folosi.
child_of (integer) Afișează toate categoriile care sunt descendente (adică copii și nepoți) ale categoriei identificate prin ID-ul său. Nu există o valoare implicită pentru acest parametru. Dacă parametrul este folosit, parametrul hide_empty este setat la false.
parent (integer) Afișează doar categoriile care sunt descendente directe (adică doar copii) ale categoriei identificate prin ID-ul său. Acesta NU funcționează ca parametrul 'child_of'. Nu există o valoare implicită pentru acest parametru. [În 2.8.4]
Acum trebuie să parcurgi $categories. Nu poți pur și simplu să afișezi un array.
foreach ($categories as $c) {
var_dump($c);
// ceea ce vrei cu adevărat în loc de var_dump este ceva care să
// creeze markup -- poate elemente de listă, de exemplu...
echo '<li>'.$c->cat_name.'</li>';
}
Din păcate, asta îmi afișează doar un Array. Nu sunt extrase nicio valoare.
Chris Da Sie
'Array' este ceea ce se întâmplă când încerci să afișezi un array. Trebuie să parcurgi array-ul și să afișezi fiecare element individual.
s_ha_dum
Ai putea să adaugi 'hide_empty' => false pentru a afișa și categoriile goale.
Floris
opțional, poți extrage ID-ul categoriei astfel ->$categories = get_categories( array( 'parent' => get_cat_ID( 'Numele Tău de Categorie' ) ) ); ... atâta timp cât numele categoriei nu se schimbă
aequalsb
Folosește codul de mai jos în fișierul tău archive.php. Acest cod te va ajuta:
$term = get_queried_object();
$children = get_terms( $term->taxonomy, array(
'parent' => $term->term_id,
'hide_empty' => false
));
if ( $children ) {
foreach( $children as $subcat ) {
echo '<li><a href="' . esc_url(get_term_link($subcat, $subcat->taxonomy)) . '">' . $subcat->name . '</a></li>';
}
}
Pentru a obține categoriile copil, puteți utiliza următorul cod.
$category = get_queried_object(); // aceasta este pentru a obține categoria părinte pe arhivă sau orice loc în care este apelat obiectul categoriei.
$categories=get_categories(
array( 'parent' => $category->term_id,
'hide_empty' => false )
);
Notă :- Am folosit 'hide_empty' => false pentru a afișa categoriile care nu au nicio postare sub ele. Apoi utilizați array-ul $categories pentru a parcurge și a vă crea markup-ul.