I have the following below which I have used to create a custom post type and a custom taxonomy.

Within the products section I've created the categories "monitors" & "consumables".

I have then created the template taxonomy-monitors.php, is that correctly named for the monitors category? Also what is the url I need to visit to see only the monitors category using that template?

add_action( 'init', 'create_post_type' );
function create_post_type() {
    register_post_type( 'products',
            'labels' => array(
                'name' => __( 'Products' ),
                'singular_name' => __( 'Product' )
        'capability_type' => 'post',
        'supports' => array('title','editor','comments'),   
        'public' => true,
        'has_archive' => true,
        'rewrite' => array( 'slug' => 'products' ),

function news_init() {
    // create a new taxonomy
            'label' => __( 'Product Categories' ),
            'sort' => true,
            'hierarchical' => true,
            'args' => array( 'orderby' => 'term_order' ),
            'rewrite' => array( 'slug' => 'products-category' )
add_action( 'init', 'news_init' );

UPDATE enter image description here

3 Answers 3



See the Template Hiearchy for a more detailed break down of how WordPress chooses the template.

For a taxonomy term slug ('monitors' your example) in the taxonomy taxonomy (e.g. 'products') WordPress will try to use the following templates (in this order)


For your 'monitors' taxonomy term page, WordPress will use


if it exists. If it doesn't, then for that taxonomy it will fallback to


and so on.


The following url should point to the 'monitors' products page:


You have also specified an url rewrite, so assuming the rewrite rules have been flushed and there isn't a clash, the following should also work

  • Ok Thanks. I now have a template taxonomy-products-monitors.php, went to the permalinks section and clicked save (that flushes it right?) then went to the page http://www.neurosignsurgical.com/v2/products-category/monitors but it still shows a 404. Really don't understand why!
    – Rob
    Commented Aug 15, 2012 at 11:20
  • That does flush it, yes. Keep in mind that terms with now posts will probably display a 'nothing found'. If the first link works find, then its a permalink issue. You should use this plug-in to diagnose it. A template won't effect a 404. Commented Aug 15, 2012 at 14:00
  • I've tried adding new products and categorising them as monitors, the first link gave a 404 and so did the second one. Tried the plugin (I'll update the question with a screenshot).
    – Rob
    Commented Aug 15, 2012 at 14:17
  • Sounds like you haven't flushed your permalinks. Go to the Settings > Permalinks page and just hit 'Save' again to force an update of the rewrite rules.
    – Tom Auger
    Commented Aug 15, 2012 at 15:34

Reference : https://stackoverflow.com/questions/33888951/wordpress-custom-post-type-taxonomy-template


do_action('genesis_before_content_sidebar_wrap'); ?>

<div id="content-sidebar-wrap">
<?php do_action('genesis_before_content'); ?>

    <div class="wrap">
        <main class="content"> 
                $case_study_cat_slug = get_queried_object()->slug;
                $case_study_cat_name = get_queried_object()->name;
                <h2><?php echo $case_study_cat_name; ?></h2>
                $al_tax_post_args = array(
                    'post_type' => 'success_stories', // Your Post type Name that You Registered
                    'posts_per_page' => 999,
                    'order' => 'ASC',
                    'tax_query' => array(
                            'taxonomy' => 'success_stories_category',
                            'field' => 'slug',
                            'terms' => $case_study_cat_slug
                $al_tax_post_qry = new WP_Query($al_tax_post_args);

                if($al_tax_post_qry->have_posts()) :
                   while($al_tax_post_qry->have_posts()) :
                        echo '<div class="post-excerpt">'; 
                        <h2 class="entry-title" itemprop="headline"><a href="<?php the_permalink(); ?>" class="entry-title-link"><?php  the_title(); ?></a></h2>
                        <div class="entry-content"> <?php echo excerpt(35);  ?> </div>





  • Please edit your answer, and add an explanation: why could that solve the problem?
    – fuxia
    Commented Dec 28, 2018 at 7:19

For this, add the following code in the functions.php (located in the theme folder):

add_action( 'init', 'create_cw_hierarchical_taxonomy', 0 );
//create a custom taxonomy name
function create_cw_hierarchical_taxonomy() {
$labels = array(
'name' => _x( 'Topics', 'taxonomy general name' ),
'singular_name' => _x( 'Topic', 'taxonomy singular name' ),
'search_items' => __( 'Search Topics' ),
'all_items' => __( 'All Topics' ),
'parent_item' => __( 'Parent Topic' ),
'parent_item_colon' => __( 'Parent Topic:' ),
'edit_item' => __( 'Edit Topic' ),
'update_item' => __( 'Update Topic' ),
'add_new_item' => __( 'Add New Topic' ),
'new_item_name' => __( 'New Topic Name' ),
'menu_name' => __( 'Topics' ),
// taxonomy register
register_taxonomy('topics',array('post'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'topic' ),

I have found it here and here i found how to create Non-hierarchical Taxonomy https://www.wpblog.com/create-custom-taxonomies-in-wordpress/

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.