Obtenez les enfants de la catégorie parent


17

J'essaie d'obtenir toutes les catégories d'enfants à afficher dans cette boucle, mais je lutte avec le code. C'est ce que j'ai jusqu'à présent.

<?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'); ?> /*This should be the children of the parent category */
    </div>
    </dd>
<?php } ?>

Toute aide est la bienvenue

Réponses:


19

Vous ne pouvez pas simplement passer la chaîne "parent" à get_categories. Vous devez transmettre l'ID du parent.

$categories=get_categories(
    array( 'parent' => $cat->cat_ID )
);

Notez qu'il existe deux paramètres "get child" similaires mais pas égaux que vous pouvez utiliser.

child_of (entier) Affiche toutes les catégories qui sont des descendants (c'est-à-dire enfants et petits-enfants) de la catégorie identifiée par son ID. Il n'y a pas de valeur par défaut pour ce paramètre. Si le paramètre est utilisé, le paramètre hide_empty est défini sur false.

parent (entier) Afficher uniquement les catégories qui sont des descendants directs (c'est-à-dire les enfants uniquement) de la catégorie identifiée par son ID. Cela ne fonctionne PAS comme le paramètre 'child_of'. Il n'y a pas de valeur par défaut pour ce paramètre. [Au 2.8.4]

Maintenant, vous devez parcourir le $categories. Vous ne pouvez pas simplement faire écho à un tableau.

foreach ($categories as $c) {
    var_dump($c);
    // what you really want instead of var_dump is something to
    // to create markup-- list items maybe, For example...
    echo '<li>'.$c->cat_name.'</li>';
}

Malheureusement, cela me donne juste une sortie d'Array. Aucune valeur n'est retirée.
Chris Da Sie

'Array' est ce qui se produit lorsque vous essayez d'écho d'un tableau. Vous devez parcourir le tableau et faire écho aux différents éléments.
s_ha_dum

2
Vous voudrez peut-être ajouter 'hide_empty' => false. Pour afficher également les catégories vides.
Floris

2

Utilisez le code ci-dessous dans votre fichier archive.php. Ce code vous aidera à:

<?php

    $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>';
        }
    }
?>

Veuillez modifier votre réponse et ajouter une explication: pourquoi cela pourrait-il résoudre le problème?
fuxia

0

S'il n'y a pas de valeurs dans le tableau, vous pouvez essayer l'approche suivante:

$last_categories = get_categories(
  array(
    'taxonomy' => 'product_cat',
    'parent' => $sub_category->cat_ID
  )
);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.