Ottieni i figli della categoria genitore


17

Sto cercando di visualizzare tutte le categorie di bambini in questo ciclo, ma sto lottando con il codice. Questo è quello che ho finora.

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

Qualsiasi aiuto sarebbe grande

Risposte:


19

Non puoi semplicemente passare la stringa "parent" a get_categories. Devi passare l'ID del genitore.

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

Si noti che esistono due parametri simili ma non uguali "get child" che è possibile utilizzare.

child_of (intero) Visualizza tutte le categorie che sono discendenti (cioè figli e nipoti) della categoria identificata dal suo ID. Non esiste alcun valore predefinito per questo parametro. Se si utilizza il parametro, il parametro hide_empty è impostato su false.

genitore (intero) Visualizza solo le categorie che sono discendenti diretti (cioè solo figli) della categoria identificata dal suo ID. Questo NON funziona come il parametro 'child_of'. Non esiste alcun valore predefinito per questo parametro. [In 2.8.4]

Ora devi passare sopra il $categories. Non puoi semplicemente fare eco a un array.

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

Sfortunatamente, questo mi sta solo dando un output di Array. Nessun valore viene inserito.
Chris Da Sie,

"Array" è ciò che accade quando si tenta di fare eco a un array. È necessario eseguire il loop sull'array ed eseguire l'eco dei singoli elementi.
s_ha_dum,

2
Potresti voler aggiungere 'hide_empty' => false. Per mostrare anche categorie vuote.
Floris,

2

Usa il codice qui sotto nel tuo file archive.php. Questo codice ti aiuterà a:

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

Si prega di modificare la risposta , e aggiungere una spiegazione: perché potrebbe che risolvere il problema?
fuxia

0

Se non ci sono valori nell'array, puoi provare il seguente approccio:

$last_categories = get_categories(
  array(
    'taxonomy' => 'product_cat',
    'parent' => $sub_category->cat_ID
  )
);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.