I have changed my post type URL structure to have the taxonomy type in the URL as well by doing this:

In register_post_type (Post type: release):

'rewrite' => array('slug' => __('releases/%type%', 'mytheme'), 'with_front' => false),

In functions.php

function wpa_show_permalinks( $post_link, $post ){
  if ( is_object( $post ) && $post->post_type == 'release' ){
      $terms = wp_get_object_terms( $post->ID, 'type' );
      if( $terms ){
          return str_replace( '%type%' , $terms[0]->slug , $post_link );
  return $post_link;
add_filter( 'post_type_link', 'wpa_show_permalinks', 1, 2 );

When I loop through the available types in my I need to generate the correct permalink for example /releases/movies/ but when I loop through get_terms and display the link like this:


it returns /types/movies. What would be the most elegant way to release the URL with the post type. I wanna avoid writing the urls hardcoded in case it changes.

  • Try adding release to rewrite argument in register_taxonomy(), as Tom suggested here. – nmr Aug 12 at 16:33
  • @nmr Thanks, that was so straightforward that I missed it – Max Tommy Mitschke Aug 12 at 17:06

Your Answer

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

Browse other questions tagged or ask your own question.