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?
user1374796
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
@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.
user1374796
@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 :(
user1374796
@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?
user1374796