When I register my custom post type, I set this:
'hierarchical' => true,
'supports' => array( 'title','author', 'page-attributes' ),
So, I am supose to see ‘order’, ‘templates’, ‘parents’ in Attributes box when create new post. But, I don’t see the ‘templates’ drop down showing up.
Anything else I should do to enable the choice of ‘templates’ ?
You can’t apply templates to custom post types in this manner. That will show up only if the post type is ‘page’ ( Check the wp-admin/includes/meta-boxes.php line 568 ). However if you want to style all your single custom post types in the same manner but different from other post types you could use the single-[posttype].php -> http://codex.wordpress.org/images/1/18/Template_Hierarchy.png
Well, as of WordPress 4.7 custom templates are also available to custom post types, when defining a template, below the name of the template add another line like (where ‘product’ is your custom post type):
and remember to add ‘page-attributes’ when registering your custom post type:
to display the “Post attributes” box.
With my theme, I provide “virtual” templates. There are no specific
{template}.php
files in my theme, so I filtered the PAGE templates like so:I was looking for a “simple” way to add the actual post meta box on a Custom Post Type (CPT) when I came across this post. Since my new CPT will use this same array of “virtual” templates, I just needed to get a post meta box in place.
Using the theme_{$post_type}_templates It automatically creates this post meta box area for me. So where my CPT is called
my_cpt
I added the filter like so:Now, the meta box and selector shows up, and I can even change on the bulk edit screen since this is all built in. Very handy!
just create any template file and set in header of template this:
then template selector appears in ‘Post Attributes’