Cum să obții slug-ul sau titlul unei categorii din ID-ul acesteia în WordPress
Am un câmp personalizat configurat care returnează ID-ul unei categorii selectate. Doresc să folosesc acest ID de categorie pentru a afișa, într-un caz: slug-ul categoriei, iar în alt caz: titlul categoriei.
Câmpul este apelat simplu astfel: <?php the_field('category_test'); ?>
și returnează ID-ul, în acest caz 4
.
Este posibil să folosesc acest câmp pentru a returna slug-ul categoriei și, de asemenea, pentru a returna titlul categoriei? Nu sunt sigur cum sau dacă acest lucru poate fi realizat. Orice sugestii ar fi foarte apreciate!

get_category
va returna toate informațiile necesare pentru ambele cazuri.
$catinfo = get_category(get_field('category_test'));
Din Codex, asta va oferi (date exemplificative evident):
stdClass Object ( [term_id] => 85 [name] => Nume Categorie [slug] => nume-categorie [term_group] => 0 [term_taxonomy_id] => 85 [taxonomy] => category [description] => [parent] => 70 [count] => 0 [cat_ID] => 85 [category_count] => 0 [category_description] => [cat_name] => Nume Categorie [category_nicename] => nume-categorie [category_parent] => 70 )
Sunt destul de sigur că get_field
este corect.
get_category
funcționează corect pentru orice ID de categorie pe care l-am încercat și returnează NULL
pentru ID-uri de categorii invalide, dar conform discuției de mai jos, get_field
poate returna un array. Când se întâmplă acest lucru, get_category
pare să returneze prima categorie din baza de date după ID, care implicit este categoria uncategorized
. Acest lucru poate fi demonstrat cu următoarele:
var_dump(get_category(array(8,9,10)));
Prin urmare, pentru a compensa, va trebui să folosiți:
$cat_field = get_field('category_test');
if (is_array($cat_field)) {
$cat_field = $cat_field[0];
}
$catinfo = get_category($cat_field);
Pentru a obține orice câmp specific, folosiți sintaxa standard de obiect. De exemplu:
echo $catinfo->slug;
Sau
$cname = $catinfo->name;

ah asta aproape funcționează, deși din nu știu ce motiv returnează un array pentru categoria Necategorizat
, chiar dacă ID-ul transmis aparține unei alte categorii?

ACF poate returna un array de valori în special când folosești câmpuri de taxonomie. Probabil ai nevoie să folosești ceva de genul $category = get_field('category_test');
și apoi $catinfo = get_category( $category[0] );

@RRikesh Se pare că asta nu returnează nimic? Metoda de mai sus returnează un array, dar nu pentru categoria corectă, afișând doar Necategorizat
din nu știu ce motiv.

@RRikesh Am încercat și function get_cat_slug($cat_id) {
$cat_id = (int)$cat_id;
$category = &get_category($cat_id);
return $category->slug;
}
în functions.php și <?php echo get_cat_slug(get_field('category_test')); ?>
în pagina de test, dar chiar dacă câmpul category_test
returnează ID-ul 4
, slug-ul returnat este din nou cel al categoriei necategorizate
:(

@s_ha_dum
ah, asta aproape că funcționează, dar din anumite motive returnează un array pentru categoria Necategorizate, chiar dacă ID-ul transmis este din altă categorie?
