Obter slug de termo da postagem atual

2

Estou trabalhando em um único modelo de tipo de postagem, no qual mostro um menu de navegação com links para todas as postagens do mesmo termo.

Agora eu quero usar este modelo para todos os termos diferentes, então $ term_slug precisa conter o termo slug da postagem atual para que eles possam corresponder às outras postagens.

Encontrei muitas vezes na internet esse código para fazer o trabalho, mas não funciona para mim:

$terms = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
$term_slug = $term->slug;

Este artigo diz que isso faria o trabalho: enlace

O que estou fazendo de errado?

$args = array(
    'post_type'     => 'myposttype',
    'mytaxonomy'    => $term_slug,
    'order'         => 'ASC'
);              

$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>'; 

    } 
}
    
por Robbert 23.01.2014 / 17:17

2 respostas

14

Seu código funciona em uma página em que um termo é consultado (um arquivo de termos de taxonomia) e não em uma única postagem.

Para uma postagem única, você precisa buscar os termos pertencentes a essa postagem.

$terms = get_the_terms( $post->ID, 'your-taxonomy' );
if ( !empty( $terms ) ){
    // get the first term
    $term = array_shift( $terms );
    echo $term->slug;
}
    
por Milo 23.01.2014 / 17:28
0

Abaixo, o código funciona bem se houver vários termos para mostrar: -

echo get_the_term_list( 
    $post->ID, 
    'styles', 
    '<ul class="styles"><li>', 
    ',</li><li>', 
    '</li></ul>' 
); 
    
por Sanj2cool 31.01.2016 / 10:57