Ottenere lo slug del termine del post corrente
Sto lavorando su un template per un tipo di post personalizzato dove mostro un menu di navigazione con link a tutti i post dello stesso termine.
Ora voglio utilizzare questo template per tutti i diversi termini quindi $term_slug deve contenere lo slug del termine del post corrente in modo che possano corrispondere agli altri post.
Ho trovato molte volte su internet questo codice per svolgere il lavoro ma non funziona per me:
$terms = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
$term_slug = $term->slug;
Questo articolo dice che questo dovrebbe funzionare: http://www.wpbeginner.com/wp-themes/how-to-show-the-current-taxonomy-title-url-and-more-in-wordpress/
Cosa sto facendo di sbagliato?
$args = array(
'post_type' => 'myposttype', // tipo di post personalizzato
'mytaxonomy' => $term_slug, // tassonomia
'order' => 'ASC' // ordinamento ascendente
);
$current_id = get_the_ID();
$the_query = new WP_Query( $args );
if($the_query->have_posts() ) {
while ($the_query->have_posts()) { $the_query->the_post();
echo '<li><a' . ($current_id == $post->ID ? ' class="current"' : '') . ' href=" ' . get_permalink() . ' ">' . get_the_title() . '</a></li>';
}
}
Il tuo codice funziona su una pagina dove viene interrogato un termine (un archivio di termini di tassonomia), non su un singolo articolo.
Per un singolo articolo, devi recuperare i termini appartenenti a quell'articolo.
$terms = get_the_terms( $post->ID, 'your-taxonomy' );
if ( !empty( $terms ) ){
// ottieni il primo termine
$term = array_shift( $terms );
echo $term->slug;
}
Soluzione fantastica! Ho provato a usare la documentazione per ottenere tutti i termini ma niente da fare. Conosci un modo per farlo? http://codex.wordpress.org/Function_Reference/get_term
GuiHarrison
Non hai bisogno di un ciclo for.
$slugs = wp_get_post_terms($post_id,'your-taxonomy',['fields'=>'slugs']);
$slugs sarà un array di slug di your-taxonomy assegnati al post con $post_id
Fonti: