web-dev-qa-db-fra.com

Obtenir le terme slug du poste actuel

Je travaille sur un modèle de type d'article unique dans lequel je montre un menu de navigation avec des liens vers tous les articles du même terme.

Maintenant, je veux utiliser ce modèle pour tous les termes, donc $ term_slug doit contenir le terme slug du message en cours pour qu’il puisse correspondre aux autres messages.

J'ai trouvé à plusieurs reprises sur Internet ce code pour faire le travail mais cela ne fonctionne pas pour moi:

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

Cet article dit que cela ferait le travail: http://www.wpbeginner.com/wp-themes/how-to-show-the-current-taxonomy-title-url-and-more-in-wordpress/

Qu'est-ce que je fais mal?

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

    } 
}
2
Robbert

Votre code fonctionne sur une page où un terme est interrogé (une archive de termes de taxonomie), pas un seul post.

Pour un seul message, vous devez récupérer les termes appartenant à ce message.

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

Le code ci-dessous fonctionne bien si vous avez plusieurs termes à afficher.:-

echo get_the_term_list( 
    $post->ID, 
    'styles', 
    '<ul class="styles"><li>', 
    ',</li><li>', 
    '</li></ul>' 
); 
0
Sanj2cool