Абсолютно!Посмотрите на фильтры single_template
и archive_template
.Они относительно просты в использовании:
function get_custom_post_type_template($single_template) {
global $post;
if ($post->post_type == 'my_post_type') {
$single_template = dirname( __FILE__ ) . '/post-type-template.php';
}
return $single_template;
}
add_filter( 'single_template', 'get_custom_post_type_template' );
Также есть Этот раздел об эффективном добавлении single-post_type.php
в иерархию шаблонов, но я предпочитаю слегка модифицированную версию, которая проще для IMOчитать:
add_filter( 'single_template', 'my_single_templates' );
function my_single_templates( $single_template ){
global $post;
$file = '/my/path/to/templates/dir/'. $post->post_type .'/single-'. $post->post_type .'php';
if( file_exists( $file ) )
$single_template = $file;
return $single_template;
}