我处理这些问题的方法是存储以供使用template_include
有条件地传递插件模板。其中一个条件是WordPress尚未找到相应的文件(即主题文件夹中不存在)。
这意味着用户只需在其主题中创建适当的模板,就可以使用特定于主题的插件模板超越插件模板。因此,他们可以进行更改,而不用担心插件更新:
以下用途single-event.php
而不是single.php
查看“事件”帖子类型的单个帖子时。
/**
* Checks to see if appropriate templates are present in active template directory.
* Otherwises uses templates present in plugin\'s template directory.
*/
add_filter(\'template_include\', \'wpse72544_set_template\');
function wpse72544_set_template( $template ){
/*
* Optional: Have a plug-in option to disable template handling
* if( get_option(\'wpse72544_disable_template_handling\') )
* return $template;
*/
if(is_singular(\'event\') && \'single-event.php\' != $template ){
//WordPress couldn\'t find an \'event\' template. Use plug-in instead:
$template = \'absolute/path/to/plugin/template/single-event.php\';
}
return $template;
}
请注意,所有主要查询条件(
is_*
此时,功能)对您可用。