title: Multiple Custom Permalink Structures in Wordpress
body: <p>I have one Custom Post Type <b>'story'</b> and two taxonomies, <b>'artist'</b> and <b>'writer'</b>.</p>
  
  <p>I have managed to get a Custom Permalink Structure like <b>/%artist/%writer%/%story%</b> by doing this (resumed code):</p>
  
  <pre><code>    add_action('init', 'custom_init');
      add_filter('post_type_link', 'story_permalink', 10, 3);
  
      function custom_init(){  
          $story = array(  
          'query_var' =&gt; true,
          'rewrite' =&gt; false,
          );
          $artist = array(
          'query_var' =&gt; true,
          'rewrite' =&gt; true
          );
          $writer = array(
              'query_var' =&gt; true,
              'rewrite' =&gt; true
          );  
  
          register_post_type('story', $story);
          register_taxonomy('artist', 'story', $artist);
          register_taxonomy('writer', 'story', $writer);
  
          global $wp_rewrite;
          $story_structure = '/%artist%/%writer%/%story%';
          $wp_rewrite-&gt;add_rewrite_tag("%story%", '([^/]+)', "story=");
          $wp_rewrite-&gt;add_permastruct('story', $story_structure, false);
      }
  
      function story_permalink($permalink, $post_id, $leavename){
          $post = get_post($post_id);
  
          $rewritecode = array(
          '%artist%',
          '%writer%',
          $leavename? '' : '%postname%',
          $leavename? '' : '%pagename%',
          );
  
          if('' != $permalink &amp;&amp; !in_array($post-&gt;post_status, array('draft', 'pending', 'auto-draft'))){
  
              if (strpos($permalink, '%artist%') !== FALSE){
              $terms = wp_get_object_terms($post-&gt;ID, 'artist');  
              if (!is_wp_error($terms) &amp;&amp; !empty($terms) &amp;&amp; is_object($terms[0])) $artist = $terms[0]-&gt;slug;
              else $artist = 'unassigned-artist';         
              }
  
          if (strpos($permalink, '%writer%') !== FALSE){
              $terms = wp_get_object_terms($post-&gt;ID, 'writer');  
              if (!is_wp_error($terms) &amp;&amp; !empty($terms) &amp;&amp; is_object($terms[0])) $writer = $terms[0]-&gt;slug;
              else $writer = 'unassigned-writer';         
          }           
  
          $rewritereplace = array(
              $artist,
              $writer,
              $post-&gt;post_name,
              $post-&gt;post_name,
          );
          $permalink = str_replace($rewritecode, $rewritereplace, $permalink);
          }
          else{
          }
          return $permalink;
      }
  </code></pre>
  
  <p>That gives me something like <b>/jason/john/the-cat-is-under-the-table</b>.</p>
  
  <p>But the structures that I really need are:</p>
  
  <p><b>/artists/%artist%<br />/writers/%writer%<br />/stories/%story%<br /></b></p>
  
  <p>Maybe is too easy, but can't really figure out how to get this done because I don't know how to deal with Custom Post Types and Taxonomies in an homogeneized Custom Permalink Structure.</p>
  
  <p>Any help to solve this will be greatly appreciated.</p>