web-dev-qa-db-fra.com

Obtenez les enfants de la catégorie parent

J'essaie de faire en sorte que toutes les catégories d'enfants s'affichent dans cette boucle, mais le code me pose problème. C'est ce que j'ai jusqu'ici.

<?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

15
Chris Da Sie

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

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

Notez qu'il existe deux paramètres "similaires" mais non identiques "get enfant } que vous pouvez utiliser.

child_of (integer) Affiche toutes les catégories qui sont des descendants (c.-à-d. 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) Affiche uniquement les catégories qui sont des descendants directs (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. [En 2.8.4]

Maintenant, vous devez passer en boucle sur 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>';
}
17
s_ha_dum

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>';
        }
    }
?>
2
Violla Queue