So, I'm having an issue where using the get_the_category function is returning an incorrect slug. My code snippet is as so:

 <?php $category_detail=get_the_category($post->ID);
        foreach($category_detail as $cd){?>
        <li class="list-inline-item"><a href="<?php echo $cd->slug ?>"><?php echo $cd->cat_name; ?></a> 
   </li><?php } 

The issue is that the category slug doesn't reflect my site's permalink settings, and returns: "mysite.com/category-name" and not "mysite.com/category/category-name". I am not sure why the category permalink is being truncated, as the category pages work correctly, but this function is outputting them incorrectly, The slug in question here is for regular posts.


The problem, as I could see it, is not with the get_the_category() function. Instead, it's the way you output the category archive link: href="<?php echo $cd->slug ?>" — you should instead use get_category_link() to get the correct URL of the category archive page. Example:

<a href="<?php echo esc_url( get_category_link( $cd ) ); ?>">

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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