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.