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.

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

Ai putea să adaugi 'hide_empty' => false pentru a afișa și categoriile goale.

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ă

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.
