将js文件排入队列时,我应该使用get_BloInfo(‘style heet_directory’)还是get_style heet_directory_uri()?

时间:2017-01-11 作者:Katharine Di Cerbo

我正在使用Genesis主题(digital pro),并且在头版的内部。php文件(functions.php的伴侣)我注意到js文件以两种不同的方式排队。

示例1:

wp_enqueue_script( \'localScroll\', get_stylesheet_directory_uri() . \'/js/jquery.localScroll.min.js\', array( \'scrollTo\' ), \'1.2.8b\', true );
示例2:

wp_enqueue_script( \'digital-backstretch-set\', get_bloginfo(\'stylesheet_directory\').\'/js/backstretch-set.js\' , array( \'jquery\', \'digital-backstretch\' ), \'1.0.0\' );
在第一个示例中,get_stylesheet_directory_uri() 在连接js文件路径之前使用,在第二个示例中get_bloginfo(\'stylesheet_directory\') 而是使用。

有人知道为什么会这样吗?使用一种方法比使用另一种方法更好吗?还是在不同的情况下?

谢谢

2 个回复
SO网友:cybmeta

从WordPress 4.7开始,我会使用get_theme_file_uri(), 因此,任何子主题都可以轻松重写文件:如果文件存在于子主题中,get_theme_file_uri() 返回该文件的URI,否则返回父主题中的文件:

wp_enqueue_script( \'localScroll\', get_theme_file_uri( \'js/jquery.localScroll.min.js\' ), array( \'scrollTo\' ), \'1.2.8b\', true );
如果要硬链接到父主题中的文件,而不允许其被子主题覆盖,请使用get_parent_theme_file().

但具体回答你的问题,两种方法都是一样的;事实上get_bloginfo( \'stylesheet_directory\' ) 是的包装器get_stylesheet_directory_uri() 正如您在source code:

case \'stylesheet_directory\':
    $output = get_stylesheet_directory_uri();
    break;
但我会避免get_bloginfo() 如果存在特定的getter函数;从长远来看,这可能更为一致。

get_stylesheet_directory_uri()get_template_directory_uri() 仍然存在,是有效的,并且可以使用,但是只有当您特别需要样式表/模板的URI时,才应该使用这些函数directory, 不是的URIfile.

例如,imaging我们有一个文件位于assets/js/script.js whithin主题文件夹;然后我们可以使用所有这些选项:

  1. get_styleseet_directory_uri() . \'/assets/js/script.js\';
  2. get_template_directory_uri() . \'/assets/js/script.js\';
  3. get_theme_file_uri( \'assets/js/script.js\' );
在没有孩子的主题中,所有三个选项都将输出same URI; 但如果你发展了一个儿童主题:

选项1将链接到子主题目录中的文件,但不检查该文件是否存在。在这种情况下,我们需要将文件复制到子主题,即使我们不需要修改它get_theme_file_uri()首先检查文件是否存在于样式表目录中,如果存在则返回get_styleseet_directory_uri() . $file;. 如果子主题中不存在该文件,则返回get_template_directory_uri() . $file;. 这就像是比其他功能高出一个级别。

随着get_theme_file_uri(), get_theme_file_path() 用于获取文件的路径,而不是URI;get_parent_theme_file_uri()get_parent_theme_file_path() 也可用,但无论子主题是否处于活动状态,它们都将始终使用父文件文件。

SO网友:prosti

新四重奏:

get_theme_file_uri()
get_parent_theme_file_uri()
get_theme_file_path()
get_parent_theme_file_path()
来代替旧的四重奏:

get_stylesheet_directory_uri()
get_template_directory_uri()
get_stylesheet_directory()
get_template_directory()
按照各自的顺序。我想概述的好处是命名约定—现在创建主题时效果更好。

有一个问题。尽管如此,仍有许多WordPress安装使用低于4.7的WP。如果您知道您运行的是WordPress 4.7或更高版本,那么您就很好了。