Ottenere le categorie figlie dalla categoria genitore

29 nov 2012, 17:32:36
Visualizzazioni: 138K
Voti: 25

Sto cercando di ottenere tutte le categorie figlie da visualizzare in questo loop ma sto avendo difficoltà 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'); ?> /* Questa dovrebbe essere la categoria figlia della categoria genitore */
    </div>
    </dd>
<?php } ?>

Qualsiasi aiuto sarebbe molto apprezzato

0
Tutte le risposte alla domanda 4
5
30

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

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

Nota che ci sono due parametri "get child" simili ma non uguali che puoi utilizzare.

child_of (integer) Mostra tutte le categorie che sono discendenti (cioè figli e nipoti) della categoria identificata dal suo ID. Non c'è un valore predefinito per questo parametro. Se il parametro viene utilizzato, il parametro hide_empty viene impostato su false.

parent (integer) Mostra 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 c'è un valore predefinito per questo parametro. [In 2.8.4]

Ora devi iterare su $categories. Non puoi semplicemente echo un array.

foreach ($categories as $c) {
    var_dump($c);
    // quello che vuoi veramente invece di var_dump è qualcosa per
    // creare markup— ad esempio elementi di lista. Per esempio...
    echo '<li>'.$c->cat_name.'</li>';
}
29 nov 2012 18:01:50
Commenti

Sfortunatamente, questo mi restituisce solo un output di Array. Nessun valore viene estratto.

Chris Da Sie Chris Da Sie
29 nov 2012 18:37:01

'Array' è ciò che succede quando provi a fare echo di un array. Devi iterare sull'array e fare echo dei singoli elementi.

s_ha_dum s_ha_dum
29 nov 2012 18:39:59

Potresti voler aggiungere 'hide_empty' => false per mostrare anche le categorie vuote.

Floris Floris
18 giu 2018 17:09:27

opzionalmente, puoi ottenere l'ID della categoria in questo modo ->$categories = get_categories( array( 'parent' => get_cat_ID( 'Nome Della Tua Categoria' ) ) ); ... purché il nome della categoria non cambi

aequalsb aequalsb
16 feb 2022 15:28:03

Per ottenere categorie che non sono categorie di post, aggiungi taxonomy all'array, ad esempio array( 'parent' => 999, 'taxonomy' => 'documentation_category' ).

And Finally And Finally
22 giu 2022 16:32:20
1

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

$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>';
    }
}
25 apr 2018 10:18:18
Commenti

Per favore [modifica] la tua risposta e aggiungi una spiegazione: perché questa soluzione potrebbe risolvere il problema?

fuxia fuxia
25 apr 2018 10:57:45
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
  )
);
22 dic 2019 19:00:06
0
-1

Per ottenere le categorie figlie puoi utilizzare il seguente codice.

$category = get_queried_object(); // questo serve per ottenere la categoria genitore nell'archivio o in qualsiasi posto dove l'oggetto categoria viene chiamato.
$categories=get_categories(
                        array( 'parent' => $category->term_id,
                                'hide_empty' => false )
                                ); 

Nota :- Ho utilizzato 'hide_empty' => false per mostrare anche le categorie che non hanno alcun post al loro interno. Successivamente puoi utilizzare l'array $categories per fare un loop e creare il tuo markup.

2 mar 2020 07:55:59