Come ottenere le categorie figlie di un articolo specifico
Come posso ottenere i nomi delle categorie figlie di un articolo arbitrario?
Ad esempio ho uno slug di categoria - 'motociclette' e ho delle sottocategorie per essa. Quindi ho bisogno di ottenere il nome della sottocategoria di ogni articolo che si trova all'interno della categoria con slug motociclette. Y2ok

Per ottenere le categorie figlie di una determinata categoria genitore tramite slug, utilizza una combinazione delle funzioni get_category_by_slug()
e get_categories()
.
La seconda funzione restituirà un array di oggetti categoria che corrispondono agli argomenti della query specificata; la prima restituirà l'ID di una categoria dato il suo slug.
Ad esempio:
<?php
$motorbike_child_cat_args = array(
'child_of' => get_category_by_slug( 'motorbikes' )
);
$motorbike_child_cats = get_categories( $motorbike_child_cat_args );
?>
Successivamente, puoi fare ciò che vuoi con il tuo array di oggetti categoria. Ad esempio, per ottenere un array di nomi delle categorie figlie:
<?php
$motorbike_child_cat_names = array();
foreach ( $motorbike_child_cats as $child_cat ) {
$motorbike_child_cat_names[] = $child_cat->name;
}
?>
In effetti, a quel punto sta a te decidere cosa farne.
MODIFICA
Se hai bisogno di ottenere le categorie figlie di un post arbitrario, puoi usare get_the_category()
.
Se sei all'interno del Loop, basta chiamare get_the_category()
; se sei all'esterno del Loop, devi passare l'ID del Post alla chiamata: get_the_category( $id )
.
Ad esempio, per costruire un array di nomi delle categorie figlie (indipendentemente dal genitore) del post corrente:
<?php
$my_post_categories = get_the_category();
$my_post_child_cats = array();
foreach ( $my_post_categories as $post_cat ) {
if ( 0 != $post_cat->category_parent ) {
$my_post_child_cats[] = $post_cat->cat_name;
}
}
?>
Oppure, ad esempio, per costruire un array di nomi delle categorie figlie di 'motorbikes' del post corrente:
<?php
$my_post_categories = get_the_category();
$motorbikes_child_cats = array();
foreach ( $my_post_categories as $post_cat ) {
if ( 'motorbikes' == $post_cat->category_parent ) {
$motorbikes_child_cats[] = $post_cat->cat_name;
}
}
?>
È più simile a quello che stavi cercando?
MODIFICA 2
Se hai solo bisogno di ottenere tutte le categorie del tuo post:
<?php
$all_post_categories = get_the_category();
$my_post_cats = array();
foreach ( $my_post_categories as $post_cat ) {
$my_post_cats[] = $post_cat->cat_name;
}
?>
Questo ti darà tutte le categorie per il Post corrente. Non ho idea di come lo slug della categoria motorbikes
sia rilevante in questa domanda.

Ciao, grazie, ma come posso ottenere il nome della sottocategoria di $post->ID, dato che $cat = get_the_category($post->ID); $category_name = $cat->name;
non funziona?

Quindi, stai cercando di ottenere le categorie figlie di un post arbitrario, piuttosto che le categorie figlie di una categoria nota, 'motociclette'?

Ciao, sì ma come posso visualizzarlo? Se faccio qualcosa come questo - echo $motorbikes_child_cats[0]; oppure echo $my_post_child_cats[0]; verrà visualizzato vuoto.

Cosa ottieni con <?php var_dump( $my_post_child_cats ); ?>
? Se è vuoto, sei sicuro che il tuo post abbia effettivamente delle categorie figlie?

Ciao, restituisce NULL, quindi significa che non ho sottocategorie? Se è così, come posso ottenere il nome della categoria per il mio post, se lo slug della categoria è 'motorbikes'?

$categories = wp_get_post_categories( get_the_ID(), array('fields' => 'ids') );
$arguments = array(
'taxonomy' => 'category', // Tassonomia delle categorie
'childless' => true, // Ottieni solo categorie senza figli
'include' => $categories, // Includi solo le categorie specificate
);
$selected_category = get_terms( $arguments ); // Recupera i termini in base agli argomenti
