Récupère les enfants de la catégorie parent

13

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 serait formidable

    
posée Chris Da Sie 29.11.2012 - 16:32

2 réponses

16

Vous ne pouvez pas simplement transmettre 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 "d'obtention" similaires mais non égaux que vous pouvez utiliser.

  

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

     

parent       (entier) Affiche 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 fait   NE fonctionne PAS comme le paramètre 'child_of'. Il n'y a pas de défaut pour cette   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>';
}
    
réponse donnée s_ha_dum 29.11.2012 - 17:01
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>';
        }
    }
?>
    
réponse donnée Violla Queue 25.04.2018 - 09:18

Lire d'autres questions sur les étiquettes