Restituisci lo slug/titolo della categoria dall'ID categoria
Ho impostato un campo personalizzato che restituisce l'ID di una categoria selezionata. Vorrei usare questo ID categoria per mostrare in un caso: lo slug della categoria, e in un altro caso: il titolo della categoria.
Il campo viene richiamato semplicemente così: <?php the_field('category_test'); ?>
e restituisce l'ID, in questo caso 4
.
È possibile usare questo campo per restituire lo slug della categoria e anche per restituire il titolo della categoria? Non sono sicuro di come o se questo possa essere fatto. Qualsiasi suggerimento sarebbe molto apprezzato!

get_category
restituirà tutte le informazioni necessarie per entrambi i casi.
$catinfo = get_category(get_field('category_test'));
Dal Codex, questo ti darà (dati di esempio ovviamente):
stdClass Object ( [term_id] => 85 [name] => Nome della Categoria [slug] => nome-categoria [term_group] => 0 [term_taxonomy_id] => 85 [taxonomy] => category [description] => [parent] => 70 [count] => 0 [cat_ID] => 85 [category_count] => 0 [category_description] => [cat_name] => Nome della Categoria [category_nicename] => nome-categoria [category_parent] => 70 )
Sono abbastanza sicuro che get_field
sia corretto.
get_category
funziona correttamente per ogni ID di categoria che ho provato, e restituisce NULL
per ID di categoria non validi, ma come discusso sotto, get_field
può restituire un array. Quando ciò accade, get_category
sembra restituire la prima categoria nel database per ID, che di default è la categoria uncategorized
. Questo può essere dimostrato con il seguente codice.
var_dump(get_category(array(8,9,10)));
Pertanto, per compensare, avrai bisogno di:
$cat_field = get_field('category_test');
if (is_array($cat_field)) {
$cat_field = $cat_field[0];
}
$catinfo = get_category($cat_field);
Per ottenere qualsiasi campo specifico, usa semplicemente la sintassi standard degli oggetti. Ad esempio:
echo $catinfo->slug;
Oppure
$cname = $catinfo->name;

ah questo quasi funziona, anche se per qualche motivo restituisce un array per la categoria Uncategorized
, nonostante l'ID passato appartenga a un'altra categoria?

ACF può restituire un array di valori specialmente quando usi campi tassonomia. Probabilmente hai bisogno di usare qualcosa come $category = get_field('category_test');
e poi $catinfo = get_category( $category[0] );

@RRikesh Questo sembra non restituire nulla? Il metodo sopra restituisce un array, ma non per la categoria corretta, mostrando solo Uncategorized
per qualche motivo.

@RRikesh Ho anche provato function get_cat_slug($cat_id) {
$cat_id = (int)$cat_id;
$category = &get_category($cat_id);
return $category->slug;
}
in functions.php e <?php echo get_cat_slug(get_field('category_test')); ?>
nella pagina di test e nonostante il campo category_test
restituisca l'ID 4
, lo slug che viene restituito è ancora quello della categoria uncategorized
:(

@s_ha_dum
ah questo quasi funziona, anche se per qualche motivo sta restituendo un array per la categoria Uncategorized, nonostante l'ID passato sia di un'altra categoria?
