Mostra tutti gli slug di wp_get_post_terms

14 mar 2014, 18:54:01
Visualizzazioni: 24.4K
Voti: 1

Sto utilizzando il seguente codice per visualizzare gli slug della mia tassonomia personalizzata. Tuttavia, viene mostrata solo la prima categoria e non tutte le categorie correlate. So che è abbastanza semplice ed è legato a [0] ma non riesco a capire come modificarlo.

// Ottiene i termini del post
$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' ); 
$getslug = $getslugid [0]->slug;
echo $getslug;
0
Tutte le risposte alla domanda 3
4

La funzione principale di WordPress wp_list_pluck() dovrebbe rendere questo compito piuttosto semplice.

$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' ); 
$slugs = implode(', ',wp_list_pluck($getslugid,'slug'));
echo $slugs;
14 mar 2014 19:49:01
Commenti

+1, non sapevo nemmeno di questa funzione. Poiché utilizza anche il foreach (parlando di performance), preferisco ancora la mia soluzione, dato che ho un controllo più preciso e potrei utilizzare più campi dell'oggetto.

fischi fischi
14 mar 2014 19:57:39

Sì, in termini di performance... probabilmente non c'è molta differenza. È solo una scorciatoia comoda se hai bisogno di un solo valore.

s_ha_dum s_ha_dum
14 mar 2014 20:21:23

@s_ha_dum Non conoscevo wp_list_pluck(), grazie.

Nypam Nypam
27 ago 2017 11:31:27

@s_ha_dum Stessa cosa. Non avevo mai sentito parlare di questa funzione wp_list_pluck. Salva la vita :)

melvin melvin
5 lug 2019 15:18:32
0

Questa è più una domanda relativa a PHP, ma la soluzione è semplice - devi utilizzare un ciclo foreach su $getslug, perché al momento stai solo visualizzando lo slug della prima tassonomia.

La funzione wp_get_post_terms() non restituisce un singolo oggetto, ma un array di oggetti. Hai ragione riguardo al [0], questo indica che stai controllando il primo elemento di detto array.

La tua funzione dovrebbe essere simile a questa:

$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' ); 
foreach( $getslugid as $thisslug ) {

    echo $thisslug->slug . ' '; // Aggiunto uno spazio tra gli slug con . ' '

}
14 mar 2014 19:15:37
0

Nelle versioni più recenti di WordPress è possibile interrogare direttamente solo gli slug delle tassonomie. Penso che questa funzionalità sia stata introdotta con l'aggiunta della classe WP_Term_Query nella versione 4.6.0 di WordPress.

$slugs = wp_get_post_terms( $post->ID, 'opd_taggallery', array( 
    'fields' => 'id=>slug',
) );
echo implode( " ", $slugs );
26 gen 2017 00:24:44