你的template_override()
如果不满足条件,函数不会返回任何内容,这将破坏所有不满足条件的内容。您需要通过以下方式传递现有模板:
function wpse_283378_template_override( $template ) {
// My conditions.
return $template;
}
add_filter(\'template_include\', \'wpse_283378_template_override\');
此外,
is_post_type()
和
template_override()
是非常通用的函数名称,这会增加与其他插件和主题冲突的风险,请在它们前面加上项目特有的名称。
定义is_post_type()
不管怎么说,这个函数是多余的。只需更换is_single()
具有is_singular( \'portfolio\' )
:
function wpse_283378_template_override( $template ) {
if ( is_singular( \'portfolio\' ) ) {
$new_template = locate_template( \'template-portfolio.php\' );
if ( $new_template != \'\' ) {
return $new_template;
}
}
return $template;
}
add_filter(\'template_include\', \'wpse_283378_template_override\');
请注意,在返回模板文件之前,我还检查了模板文件是否存在,这样,如果模板文件不存在,它将返回默认值,而不是给您一个白色屏幕。