Afișarea tuturor slug-urilor wp_get_post_terms
Folosesc următorul cod pentru a afișa slug-urile taxonomiei mele personalizate. Cu toate acestea, acesta afișează doar prima categorie și nu toate categoriile asociate. Știu că este destul de simplu și are legătură cu [0] dar nu pot să-mi dau seama cum să-l modific.
$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' );
$getslug = $getslugid [0]->slug;
echo $getslug;
Funcția WordPress Core wp_list_pluck()
ar trebui să facă acest lucru destul de ușor.
$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' );
$slugs = implode(', ',wp_list_pluck($getslugid,'slug'));
echo $slugs;

+1, nici măcar nu știam despre această funcție. Deoarece utilizează și foreach (vorbind despre performanță), încă prefer soluția mea, deoarece am control fin și aș putea folosi mai multe câmpuri ale obiectului.

Da, din punct de vedere al performanței... probabil nu prea mare diferență. Este doar o scurtătură convenabilă dacă ai nevoie doar de o singură valoare.

Aceasta este mai degrabă o întrebare legată de PHP, dar soluția este simplă - trebuie să folosești o buclă foreach
pe $getslug
, deoarece în prezent afișezi doar slug-ul primei taxonomii.
Funcția wp_get_post_terms()
nu returnează un singur obiect, ci un array de obiecte. Ai dreptate cu [0]
, aceasta indică faptul că verifici prima intrare din acel array.
Funcția ta ar trebui să arate cam așa:
$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' );
foreach( $getslugid as $thisslug ) {
echo $thisslug->slug . ' '; // Adăugat un spațiu între slug-uri cu . ' '
}

În versiunile mai noi de WordPress este posibil să interogăm direct doar slug-urile taxonomiilor. Cred că această funcționalitate a fost introdusă odată cu implementarea clasei WP_Term_Query în WordPress versiunea 4.6.0.
$slugs = wp_get_post_terms( $post->ID, 'opd_taggallery', array(
'fields' => 'id=>slug',
) );
echo implode( " ", $slugs );
