I have found this place to be a good source of information in the past through a lot of Googling for the problems I have run into. My question pertains to the verbose rewrite rules WordPress uses.
I have set up a custom post type called project, and I have registered a custom taxonomy called projects. Everything works great except for the rewrite slug options as they end up conflicting – most likely due to the rewrite rules.
Basically this is the structure I am looking to achieve:
example.com/work/%taxonomy%/%post_name%/
(for posts)example.com/work/%taxonomy%/
(list posts belonging to a particular
taxonomy term)example.com/work/
(goes to page-work.php which includes taxonomy.php to list all posts associated with that taxonomy)
Here is the code I have so far, but I need help writing the WP_Rewrite rules as this is the bit I am a bit stumped on.
$labels = array(
'name' => _x('Projects', 'post type general name'),
'singular_name' => _x('Project', 'post type singular name'),
'add_new' => _x('Add New', 'project item'),
'add_new_item' => __('Add New Project'),
'edit_item' => __('Edit Project'),
'new_item' => __('New Project'),
'view_item' => __('View Project'),
'search_items' => __('Search Projects'),
'not_found' => __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'hierarchical' => true,
'rewrite' => array('slug'=>'work', 'with_front'=>false),
'show_ui' => true,
'_builtin' => false, // It's a custom post type, not built in!
'capability_type' => 'post',
'query_var' => "project", // This goes to the WP_Query schema
'menu_position' => null,
'supports' => array('title','editor','thumbnail', 'comments', 'author', 'excerpt')
);
register_post_type('project' , $args);
// Showcase Taxonomy
register_taxonomy('projects', array('project'), array(
'public' => true,
'hierarchical' => true,
'label' => 'Project Categories',
'singular_label' => 'Project Category',
'query_var' => true,
'rewrite' => array('slug'=>'work', 'with_front'=>false, 'hierarchical'=>true)
)
);
Many thanks for your help! 🙂
Hope this can solve your problem
what you need to create is archive-work.php (your post type archive)
and taxonomy.php which will use to show your custom taxonomy archive.
I had the same problem and after a lot of struggling I ended up with this solution.
Just add this to your code
A more detailed explanation is on another post, but here’s the basic parts you need to add:
Register your taxonomies and cpt’s as you do. Make sure your rewrite slug for the taxo is “basename” and the rewrite slug for the cpt is “basename/%tax_name%”.
Tell wordpress what to do with “%tax_name%” like this: