WordPress有一个template_include
可以使用的筛选器。
// Add a filter to \'template_include\' hook
add_filter( \'template_include\', \'wpse_force_template\' );
function wpse_force_template( $template ) {
// If the current url is an archive of any kind
if( is_archive() ) {
// Set this to the template file inside your plugin folder
$template = WP_PLUGIN_DIR .\'/\'. plugin_basename( dirname(__FILE__) ) .\'/archive.php\';
}
// Always return, even if we didn\'t change anything
return $template;
}
明智的做法是允许用户决定哪些存档受到影响。许多网站都有自定义的帖子类型,可能不希望这些归档像其他帖子类型一样受到影响。您可以添加一个选项页面,动态地拉取当前站点上的所有帖子类型,并允许它们为每个类型打开或关闭插件。一旦有了这些,您将需要再次动态地提取所有post类型,然后为每个post类型动态构建“if”语句。例如
if(is_archive(\'event\') && $eventtoggle == true
- 如果它是这种特定类型的存档文件,并且用户为这种特定类型打开了插件。