I’m a bit confused with templates for custom post types defined as hierarchical. I’ve got a CPT set to hierarchical, not strictly in order to have a nested hierarchy, but so that they can be ordered by the Simple Page Ordering plugin. Here’s the code:
register_post_type(
'case_study', array(
'label' => _x( 'case studies', 'post type plural name' ),
'labels' => array(
'name' => _x( 'Case studies', 'post type general name' ),
'singular_name' => _x( 'Case study', 'post type singular name' ),
'menu_name' => _x( 'Case studies', 'admin menu' ),
'name_admin_bar' => _x( 'Case study', 'add new on admin bar' ),
'add_new' => _x( 'Add New', 'case study' ),
'add_new_item' => __( 'Add New Case study' ),
'new_item' => __( 'New Case study' ),
'edit_item' => __( 'Edit Case study' ),
'view_item' => __( 'View Case study' ),
'all_items' => __( 'All Case studies' ),
'search_items' => __( 'Search Case studies' ),
'parent_item_colon' => __( 'Parent Case studies:' ),
'not_found' => __( 'No Case studies found.' ),
'not_found_in_trash' => __( 'No Case studies found in Trash.' )
),
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'show_in_menu' => true,
'show_in_admin_bar' => true,
'menu_position' => 20, // Below Pages
'menu_icon' => 'dashicons-clipboard', // @link https://developer.wordpress.org/resource/dashicons/
'query_var' => false,
'rewrite' => array( 'slug' => 'case-study', 'with_front' => false ),
'capability_type' => 'case_study',
'map_meta_cap' => false,
'capabilities' => array(
'publish_posts' => 'publish_case_studies',
'edit_posts' => 'edit_case_studies',
'edit_others_posts' => 'edit_others_case_studies',
'delete_posts' => 'delete_case_studies',
'delete_others_posts' => 'delete_others_case_studies',
'read_private_posts' => 'read_private_case_studies',
'edit_post' => 'edit_case_study',
'delete_post' => 'delete_case_study',
'read_post' => 'read_case_study',
),
'has_archive' => false,
'hierarchical' => true, // Set to true to allow ordering
'supports' => array( 'title', 'editor', 'custom-fields', 'thumbnail', 'revisions', 'pilau-author' ),
'taxonomies' => array( 'topic' ),
)
);
By default a hierarchical CPT uses the page.php template instead of single.php – which took me a while to realise, but it makes sense.
However, now I want to create a template specifically for this CPT, and single-case_study.php doesn’t work. Neither does page-case_study.php.
How do you create a template specifically for a hierarchical CPT?