与页面模板不同,WordPress不在子目录中查找post模板页面。用于定位此类模板的基本函数是locate_template()
(参见source), 它查找主题(和父主题)的根目录。
(另一方面get_page_templates()
搜索子目录)。
您可以使用template_include
filter(过滤模板的绝对路径)更改使用的模板:
add_filter( \'template_include\', \'wpse119820_use_different_template\' );
function wpse119820_use_different_template( $template ){
if( is_post_type_archive( \'entry\' ) ){
//"Entry" Post type archive. Find template in sub-dir. Look in child then parent theme
if( $_template = locate_template( \'my-sub-dir/archive-entry.php\' ) ){
//Template found, - use that
$template = $_template;
}
}
return $template;
}