Afișarea tuturor slug-urilor wp_get_post_terms

14 mar. 2014, 18:54:01
Vizualizări: 24.4K
Voturi: 1

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;
0
Toate răspunsurile la întrebare 3
4

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;
14 mar. 2014 19:49:01
Comentarii

+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.

fischi fischi
14 mar. 2014 19:57:39

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.

s_ha_dum s_ha_dum
14 mar. 2014 20:21:23

@s_ha_dum Nu știam despre wp_list_pluck(), mulțumesc.

Nypam Nypam
27 aug. 2017 11:31:27

@s_ha_dum La fel. Nu auzisem de această funcție wp_list_pluck. Salvatoare de vieți :)

melvin melvin
5 iul. 2019 15:18:32
0

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 . ' '

}
14 mar. 2014 19:15:37
0

Î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 );
26 ian. 2017 00:24:44