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?
user1374796
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
@RRikesh Questo sembra non restituire nulla? Il metodo sopra restituisce un array, ma non per la categoria corretta, mostrando solo Uncategorized per qualche motivo.
user1374796
@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 :(
user1374796
@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?
user1374796