Elencare tutte le sottocategorie di una categoria

30 mar 2011, 16:56:04
Visualizzazioni: 131K
Voti: 30

Come posso ottenere tutte le sottocategorie di una determinata categoria?

1
Commenti

Come spiegato qui, puoi utilizzare in alternativa get_terms(): https://stackoverflow.com/questions/22443352/how-to-get-sub-categories-by-parent-category-id-in-wordpress

Pbinder Pbinder
7 ago 2019 19:18:20
Tutte le risposte alla domanda 2
4
39

Sì, puoi utilizzare get_categories() con l'attributo 'child_of'. Ad esempio, tutte le sottocategorie della categoria con ID 17:

$args = array('child_of' => 17);
$categories = get_categories( $args );
foreach($categories as $category) { 
    echo '<p>Categoria: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "Visualizza tutti i post in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </p> ';
    echo '<p> Descrizione:'. $category->description . '</p>';
    echo '<p> Numero di post: '. $category->count . '</p>';  
}

Questo recupererà tutte le categorie che sono discendenti (cioè figlie e nipoti).

Se vuoi visualizzare solo le categorie che sono discendenti diretti (cioè solo figlie) puoi usare l'attributo 'parent'.

$args = array('parent' => 17);
$categories = get_categories( $args );
foreach($categories as $category) { 
    echo '<p>Categoria: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "Visualizza tutti i post in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </p> ';
    echo '<p> Descrizione:'. $category->description . '</p>';
    echo '<p> Numero di post: '. $category->count . '</p>';  
}
30 mar 2011 17:13:10
Commenti

Solo un suggerimento: Con la popolarità dei custom post type e delle tassonomie, penso che sarebbe meglio suggerire get_terms, perché aiuta gli utenti a familiarizzare con le funzioni generali per recuperare i termini, mentre le funzioni per le categorie sono piuttosto specifiche per la tassonomia predefinita (anche se non in tutti i casi). Non devi essere d'accordo ovviamente, è solo un suggerimento... ;)

t31os t31os
30 mar 2011 17:49:21

Concordo che get_terms() potrebbe essere migliore.

Django Reinhardt Django Reinhardt
4 apr 2016 17:08:50

@t31os - potresti pubblicare una risposta usando get_terms per favore?

vsync vsync
30 mar 2018 23:23:33

nota bene, per impostazione predefinita, questo non restituirà le categorie che non hanno alcun post associato. utilizza hide_empty => false per ottenere tutte le categorie (come da recente versione di WordPress)

Sumit Wadhwa Sumit Wadhwa
4 feb 2020 16:06:46
0

Per le "categorie" dei custom post type utilizza get_terms().

(Modifica della risposta di @Bainternet)

            $categories = get_terms( array(
                'taxonomy' => 'product_cat', // Tassonomia delle categorie prodotto
                'hide_empty' => false,         // Mostra anche le categorie vuote
                'parent' => 17                // ID della categoria genitore
                //'child_of' => 17            // Per includere anche le sottocategorie non dirette
            ) );
            
            foreach($categories as $category) { 
                echo '<p>Categoria: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "Visualizza tutti i post in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </p> ';
                echo '<p> Descrizione:'. $category->description . '</p>';
                echo '<p> Numero post: '. $category->count . '</p>';  
            }
17 feb 2022 11:51:23