Secondo la nostra esperienza, se aggiungi molte categorie ai tuoi post di WordPress, le cose possono iniziare a sembrare un po' affollate. Categorie multiple, in particolare categorie padre e figlio, possono ingombrare i tuoi layout e rendere più difficile per i lettori trovare ciò che stanno cercando.
Non sarebbe più pulito visualizzare solo la categoria figlio per ogni post?
Questa guida ti mostrerà come modificare il file del tuo tema WordPress per visualizzare solo le categorie figlio nel tuo loop di post, dando al tuo blog un aspetto più snello e intuitivo.

Perché visualizzare solo la categoria figlio nel tuo loop di post di WordPress?
Quando crei un blog di WordPress, puoi organizzare i tuoi contenuti utilizzando categorie e tag.
Per aiutare i lettori a trovare contenuti interessanti più velocemente, potresti persino creare categorie figlio (o sottocategorie).
Ad esempio, se hai un blog di viaggi, potresti creare una categoria 'Destinazioni' e poi avere categorie figlio come 'Europa', 'America' e 'Australia'.
Per impostazione predefinita, la maggior parte dei temi WordPress mostra tutte le categorie padre e figlio per un post.

Tuttavia, se si utilizzano molte categorie, le pagine del blog potrebbero apparire disordinate e complicate. Ciò può anche rendere più difficile per i lettori trovare la categoria di loro interesse.
Per questo motivo, potresti voler nascondere le categorie padre generiche di un post e mostrare solo le categorie figlie. Detto questo, vediamo come puoi visualizzare solo le categorie figlie nel loop dei post di WordPress.
Prima di modificare un file del tema di WordPress: Punti chiave da ricordare
Questa guida è rivolta a persone che hanno familiarità con la programmazione e la modifica dei file del tema di WordPress. Ecco alcune cose che dovresti fare prima di seguire il tutorial:
- Innanzitutto, è necessario connettere il tuo sito web tramite FTP o aprire il file manager del tuo web host per poter accedere a tali file.
- Se sei un principiante, puoi consultare la nostra guida per principianti su come incollare snippet dal web in WordPress per prepararti in anticipo.
- Si consiglia di creare un backup o utilizzare un sito di staging per seguire questo metodo. In questo modo, se qualcosa va storto, il tuo sito live non sarà interessato.
Infine, questa guida è applicabile solo ai temi classici di WordPress. I temi a blocchi hanno una struttura diversa per i file del tema.
Visualizzare solo la categoria figlio nel ciclo dei post di WordPress
In questo tutorial, ti mostreremo come modificare il file del tuo tema utilizzando il file manager di Bluehost. Ma indipendentemente dal tuo provider di hosting, i passaggi dovrebbero essere simili.
Per prima cosa, accedi alla dashboard di Bluehost e vai alla scheda 'Siti web'. Quindi, fai clic su 'Impostazioni' sul sito che desideri modificare.

Successivamente, scorri verso il basso fino alla sezione Quick Links.
Quindi, fai clic sul pulsante 'File Manager'.

Questo aprirà il file manager.
Ora, dovrai trovare nel file del tuo tema il codice responsabile della visualizzazione delle categorie. Puoi iniziare a farlo andando nella cartella public_html del tuo sito » wp-content » themes » la cartella del tuo tema corrente.
A questo punto, potresti dover aprire ogni file e cartella uno per uno per trovare il file giusto da modificare. Una cosa che puoi fare è provare a trovare codice correlato alle categorie, come has_category o get_the_category_list. Se li trovi, allora dovresti essere nel file giusto.
Se non riesci a trovare il file del modello corretto, consulta il nostro foglio di riferimento sulla gerarchia dei modelli di WordPress e la nostra guida su come trovare il file del tema giusto da modificare.
Se utilizzi il tema Twenty Twenty-One, il file che dovresti cercare è il file template-tags all'interno della cartella 'inc'. Una volta trovato, puoi fare clic con il pulsante destro del mouse sul file e selezionare 'Modifica'.

Nel file, questo è lo snippet responsabile della visualizzazione delle categorie e dei tag:
if ( has_category() || has_tag() ) {
echo '<div class="post-taxonomies">';
$categories_list = get_the_category_list( wp_get_list_item_separator() );
if ( $categories_list ) {
printf(
/* translators: %s: List of categories. */
'<span class="cat-links">' . esc_html__( 'Categorized as %s', 'twentytwentyone' ) . ' </span>',
$categories_list // phpcs:ignore WordPress.Security.EscapeOutput
);
}
$tags_list = get_the_tag_list( '', wp_get_list_item_separator() );
if ( $tags_list && ! is_wp_error( $tags_list ) ) {
printf(
/* translators: %s: List of tags. */
'<span class="tags-links">' . esc_html__( 'Tagged %s', 'twentytwentyone' ) . '</span>',
$tags_list // phpcs:ignore WordPress.Security.EscapeOutput
);
}
echo '</div>';
}
} else {
Ora che hai trovato il codice giusto, puoi sostituire l'intero snippet con questo:
if ( has_category() || has_tag() ) {
echo '<div class="post-taxonomies">';
// Get the list of categories
$categories = get_the_category();
$child_cat_IDs = array(); // Array to store child category IDs
$parent_cat_IDs = array(); // Array to store parent category IDs
foreach ( $categories as $category ) {
if ( $category->parent > 0 ) {
$child_cat_IDs[] = $category->term_id; // Store the child category ID
} else {
$parent_cat_IDs[] = $category->term_id; // Store the parent category ID
}
}
// Output child categories if there are any
if ( !empty($child_cat_IDs) ) {
$output = '<span class="cat-links">' . esc_html__( 'Categorized as ', 'twentytwentyone' ) . ' ';
foreach ( $child_cat_IDs as $cat_id ) {
$cat_link = get_category_link($cat_id);
$cat_name = get_cat_name($cat_id);
$output .= '<a href="' . esc_url($cat_link) . '">' . esc_html($cat_name) . '</a> ';
}
$output .= '</span>'; // Close the span tag after the loop
echo $output; // Output the child category links
// Output parent categories if there are no child categories
} elseif ( !empty($parent_cat_IDs) ) {
$output = '<span class="cat-links">' . esc_html__( 'Categorized as ', 'twentytwentyone' ) . ' ';
foreach ( $parent_cat_IDs as $cat_id ) {
$cat_link = get_category_link($cat_id);
$cat_name = get_cat_name($cat_id);
$output .= '<a href="' . esc_url($cat_link) . '">' . esc_html($cat_name) . '</a> ';
}
$output .= '</span>'; // Close the span tag after the loop
echo $output; // Output the parent category links
}
// Handle tags
$tags_list = get_the_tag_list('', wp_get_list_item_separator());
if ( $tags_list && ! is_wp_error( $tags_list ) ) {
printf(
/* translators: %s: List of tags. */
'<span class="tags-links">' . esc_html__( 'Tagged %s', 'twentytwentyone' ) . '</span>',
$tags_list // phpcs:ignore WordPress.Security.EscapeOutput
);
}
echo '</div>'; // Close post-taxonomies div
}
} else {
Questo snippet di codice identifica prima tutte le categorie assegnate al post. Quindi, controlla se ogni categoria ha un genitore.
Se lo ha, significa che è una sottocategoria e viene aggiunta all'elenco di visualizzazione. Le categorie genitore vengono saltate, con conseguente visualizzazione più pulita e specifica della categorizzazione del tuo post.
Ecco come dovrebbe apparire quando sostituisci il codice:

Una volta terminato, salva semplicemente le modifiche.
Ora, devi visitare un post che ha una o più sottocategorie. Vedrai che la categoria genitore è nascosta e WordPress sta ora mostrando solo le sottocategorie.

Speriamo che questo articolo ti abbia aiutato a capire come visualizzare solo la categoria figlio nei tuoi post di WordPress. Successivamente, potresti voler consultare il nostro articolo su come stilizzare le singole categorie in modo diverso in WordPress e la nostra guida per principianti su come cercare per categoria in WordPress.
Se ti è piaciuto questo articolo, iscriviti al nostro canale YouTube per tutorial video su WordPress. Puoi anche trovarci su Twitter e Facebook.

Mike
Fatto!
foreach((get_the_category()) as $childcat) { $parentcat = $childcat->category_parent; if (cat_is_ancestor_of(10, $childcat)) { echo get_cat_name($parentcat); } }
MIke
Ho tre categorie principali e questo codice funziona correttamente nel mio loop di pagina singola per visualizzare il nome della categoria selezionata. Ora voglio visualizzare il genitore della categoria. La complicazione è che ho due livelli sotto la categoria principale (3 livelli) e voglio visualizzare il genitore di un livello, non il genitore di livello superiore. Sembra facile visualizzare il genitore superiore, ma non ho visto alcun codice per restituire la categoria figlio di una categoria nipote?
amnachohan
Funzionerà al di fuori del loop?
Marian Rick
Questo è un ottimo pezzo di codice. Grazie mille finora!
Per uno dei miei progetti devo andare oltre e visualizzare solo la sottocategoria più bassa. Quindi potrebbero esserci tre livelli (Moduli -> Quadrati -> Quadrati Grandi). Con questo codice vengono visualizzati tutti i sottolivelli (Quadrati -> Quadrati Grandi). Come posso dire a questo codice di ripetere il processo finché non viene trovata e visualizzata solo l'ultima figlia?
Se avete soluzioni per questo, siete di nuovo i nostri eroi! Continuate il vostro ottimo lavoro e blog!
GoranJakovljevic
è possibile farlo per 2 categorie invece di una sola?
gashface
Come includerei &orderby=ID?
Andus Beckus
Ottimo, grazie!
Ma come si fa a visualizzare i figli di tutte le categorie e non solo della cat 10?
Be great if someone could help with this.
Staff editoriale
Se stai cercando di visualizzare un elenco di tutte le categorie figlie, allora usa la funzione wp_list_categories(). Ha parametri che ti permettono di elencare solo le categorie figlie o solo le categorie genitore. Ma questo non funziona per il caso di cui stiamo parlando in questo articolo.
Amministratore
Mattia
ottimo, ma se voglio mostrare non la "categoria 10" ma la "categoria corrente"?
Keith Davis
Ottimi spunti informativi da voi ragazzi.
Devo davvero iniziare a dedicarmi a questo PHP.
Ottimo sito ragazzi e noto che siete arrivati al Pagerank 6!
Che ne dite di un paio di post su come aumentare il vostro pagerank.