有没有主题激活的挂钩?或者类似的东西?

时间:2014-01-31 作者:Neta Meta

我知道以前有人问过这个问题,但我的问题不同。

所以我有一个插件,可以动态创建自定义帖子类型。该插件还具有为每个自定义帖子类型创建模板文件的功能。

它只需转到这些主题文件夹并为每个当前主题创建模板页面。这非常适合当前的主题。然而,如果管理员添加了另一个主题并激活它,会发生什么?

因此,我正在寻找一种方法来检测激活,然后运行函数为该主题创建模板页面。

我的第一个想法是检查主题激活挂钩,我认为这是行不通的。

有人有不同的想法吗?

2 个回复
最合适的回答,由SO网友:sun 整理而成

不要在当前主题中保存模板。

相反,请将模板保存在插件本身中,并尝试使用template_include 筛选特定页面或任何使用is_page.

这样你就不用担心主题的变化了。

SO网友:s_ha_dum

我建议将文件写入主题目录是错误的方法。您可能会创建多个重复文件,这会浪费磁盘空间,而且服务器的配置也可能导致磁盘写入无法工作。

有一个名为template_include. 使用该过滤器,插件可以控制加载哪个模板,并可以从自己的目录加载模板。比如:

function load_plugin_template( $template ) { 
  global $wp_query;
  if (is_single() && \'book_type\' === $wp_query->post->post_type) {
    get_header();
    include(plugin_dir_path( __FILE__ ).\'some/file/path/file.php\');
    get_footer();
    die;
  }
  return $template;
}
add_filter( \'template_include\', \'load_plugin_template\', 99 );

结束

相关推荐

Multiple single templates?

假设我有一个名为“事件”的自定义帖子类型,它有几个用于图像、文档等的自定义元框。。是否可能有两个不同的单一模板?例如:我有一个列出所有事件的页面,如果我单击一个事件,单一视图将显示我在event single中输入的所有元信息。php模板。现在,我想有一个不同的页面,再次列出所有事件,但如果我单击查看单个事件,则会使用不同的模板,以便显示与事件相关的其他元数据。或更好:page-events.php lists all events -> click on event -> shows sin