Obține categoriile copil ale categoriei părinte

29 nov. 2012, 17:32:36
Vizualizări: 138K
Voturi: 25

Î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

0
Toate răspunsurile la întrebare 4
5
30

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>';
}
29 nov. 2012 18:01:50
Comentarii

Din păcate, asta îmi afișează doar un Array. Nu sunt extrase nicio valoare.

Chris Da Sie Chris Da Sie
29 nov. 2012 18:37:01

'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 s_ha_dum
29 nov. 2012 18:39:59

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

Floris Floris
18 iun. 2018 17:09:27

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 aequalsb
16 feb. 2022 15:28:03

Pentru a obține categorii care nu sunt categorii de articole, adaugi taxonomy în array, de exemplu array( 'parent' => 999, 'taxonomy' => 'documentation_category' ).

And Finally And Finally
22 iun. 2022 16:32:20
1

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>';
    }
}
25 apr. 2018 10:18:18
Comentarii

Te rog să [editezi] răspunsul tău și să adaugi o explicație: de ce ar putea rezolva problema?

fuxia fuxia
25 apr. 2018 10:57:45
0

Dacă nu există valori în array, puteți încerca următoarea abordare:

$last_categories = get_categories(
  array(
    'taxonomy' => 'product_cat', // taxonomie
    'parent' => $sub_category->cat_ID // ID-ul părintelui
  )
);
22 dec. 2019 19:00:06
0
-1

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.

2 mar. 2020 07:55:59