子主题中的en队脚本()不起作用

时间:2014-03-16 作者:drake035

我正在尝试将位于子主题根文件夹中的“scripts.js”排入队列。我不明白为什么下面的代码(位于“functions.php”中)不起作用:

function enqueue_scripts() {
if ( ! is_admin() ) {
    $scriptsrc = bloginfo(\'stylesheet_directory\') . \'/scripts.js\'; 
        wp_register_script( \'scripts\', $scriptsrc );
        wp_enqueue_script( \'scripts\' );
    }
}
add_action( \'wp_enqueue_scripts\', \'enqueue_scripts\' );

2 个回复
SO网友:s_ha_dum

从技术上讲,您的问题(正如已经指出的)是您使用的函数echos而不是return这是你的路。然而,使用bloginfo/get_bloginfo 长期以来,不鼓励检索主题目录路径。

“样式表url”-显示活动主题的主CSS文件url(通常是样式.CSS)。考虑改为回显get\\u stylesheet\\u uri()

  • 样式表目录”-显示活动主题的样式表目录URL。(在早期的WordPress版本中是本地路径。)考虑改为回显get\\u stylesheet\\u directory\\u uri()
  • \'template\\u url\'/“template\\u directory”-活动主题目录的url(“template\\u directory”之前是本地路径2.6; 请参阅get\\u theme\\u root()和get\\u template(),以了解黑客的备选方案。)在子主题中,get\\u bloginfo(\'template\\u url\')和get\\u template()都将返回父主题目录。考虑改为回显get\\u template\\u directory\\u uri()(对于父模板目录)或get\\u stylesheet\\u directory\\u uri()(对于子模板目录)
  • http://codex.wordpress.org/Function_Reference/bloginfo

    根据刚刚引用的法典部分,应使用等效的、正确的代码get_template_directory_uri():

    function enqueue_scripts() {
      if ( ! is_admin() ) {
        $scriptsrc = get_template_directory_uri() . \'/scripts.js\'; 
        wp_register_script( \'scripts\', $scriptsrc );
        wp_enqueue_script( \'scripts\' );
      }
    }
    add_action( \'wp_enqueue_scripts\', \'enqueue_scripts\' );
    
    请注意get_template_directory_uri() 将始终返回父主题的路径。如果希望子主题能够覆盖此文件,则需要get_stylesheet_directory_uri()

    此外,请不要使用像enqueue_scripts. 这很可能会引起麻烦,是一种不好的做法。

    SO网友:Milo

    函数不起作用的原因是使用bloginfo 在变量赋值中。这个bloginfo 作用echoes 它的价值,您需要使用get_bloginfo 哪一个returns 这就是价值。

    更改:

    $scriptsrc = bloginfo(\'stylesheet_directory\') . \'/scripts.js\';
    
    收件人:

    $scriptsrc = get_bloginfo(\'stylesheet_directory\') . \'/scripts.js\';
    
    大多数WordPress API函数有两个版本get_ prepended all返回它们的值,并且应该在将该值赋给变量或用php处理结果时使用,而不仅仅是将其直接打印到页面上。

    结束

    相关推荐