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.

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


3 Answers 3


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;
  • Thanks! Doesn't understand exactly what you are doing but it works.
    – Robbert
    Jan 24, 2014 at 9:35
  • Amazing solution! I tried to use documentation to get all the terms but no dice. Do you know a way to do that? codex.wordpress.org/Function_Reference/get_term Mar 2, 2015 at 3:31
  • @GuiHarrison In my opinion then you need to leave array_shift() away, and loop through the $term array.
    – Robbert
    May 6, 2015 at 10:24

Below code works well if have multiple terms to show.:-

echo get_the_term_list( 
    '<ul class="styles"><li>', 

You don't need a for loop.

$slugs = wp_get_post_terms($post_id,'your-taxonomy',['fields'=>'slugs']);

$slugs will be an array of your-taxonomy slugs that are assigned to the post with $post_id


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.