Get term slug of current post

I am working on a single post type template where I show a navigation menu with links to all the posts from the same term.

Now I want to use this template for all the different terms so $term_slug needs to hold the term slug of the current post so they can correspond to the other posts.

Read More

I have found many times over the internet this code to do the job but it doesn’t work for me:

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

This article says that this would do the job: http://www.wpbeginner.com/wp-themes/how-to-show-the-current-taxonomy-title-url-and-more-in-wordpress/

What am I doing wrong?

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

    } 
}

Related posts

3 comments

  1. Your code works on a page where a term is queried (a taxonomy term archive), not a single post.

    For a single post, you need to fetch the terms belonging to that post.

    $terms = get_the_terms( $post->ID, 'your-taxonomy' );
    if ( !empty( $terms ) ){
        // get the first term
        $term = array_shift( $terms );
        echo $term->slug;
    }
    
  2. Below code works well if have multiple terms to show.:-

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

Comments are closed.