是否在插件中使用主题常量?

时间:2012-04-26 作者:Zach

我正在创建的插件版本Roots Theme 功能添加-使其更具可移植性,但遇到了障碍。

根的部分作用是添加htaccess 基于当前主题信息的规则,如下所示:

// only use clean urls if the theme isn\'t a child or an MU (Network) install
if (!is_multisite() && !is_child_theme() && get_option(\'permalink_structure\')) {
  add_action(\'generate_rewrite_rules\', \'roots_add_rewrites\');
  add_action(\'generate_rewrite_rules\', \'roots_add_h5bp_htaccess\');
  if (!is_admin()) {
    $tags = array(
      \'plugins_url\',
      \'bloginfo\',
      \'stylesheet_directory_uri\',
      \'template_directory_uri\',
      \'script_loader_src\',
      \'style_loader_src\'
    );

    add_filters($tags, \'roots_clean_urls\');
  }
}
因此,它基本上是检查以确保当前设置不是多站点环境,不是子主题,并且永久链接结构已从默认值更新。看起来is_child_theme() 调用不正确,主要是因为我在前端遇到以下错误:

Notice: Use of undefined constant TEMPLATEPATH - assumed \'TEMPLATEPATH\' in /Users/studio/Sites/base_wp/wp-includes/theme.php on line 17

Notice: Use of undefined constant STYLESHEETPATH - assumed \'STYLESHEETPATH\' in /Users/studio/Sites/base_wp/wp-includes/theme.php on line 17
所以,据我所知wp-includes/theme.php 插件文件中未包含的文件(这很有意义)。

我一直在用这句话顶撞墙壁,但我正试图找出最干净的方法,将这些常量添加到插件本身->我应该把它包括进去吗theme.php 文件谢谢

UPDATE: 看起来我可以使用wp-includes/theme.php (如get_themes()) 所以我知道这不是问题所在。陛下

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

TEMPLATEPATHSTYLESHEETPATH will be deprecated in the near future. 依赖这些常数是不安全的。使用get_template_directory()get_stylesheet_directory() 取而代之的是
然后等待,直到init 钩(或after_setup_theme 在使用它们之前,请确保已加载所有需要的文件。

插件示例:

add_action( \'after_setup_theme\', \'wpse_50359_set_plugin_basics\' );

function wpse_50359_set_plugin_basics()
{
    if ( is_child_theme() )
    {
        // do something awesome …
    }
}

结束

相关推荐