从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主题文件夹;然后我们可以使用所有这些选项:
get_styleseet_directory_uri() . \'/assets/js/script.js\';
get_template_directory_uri() . \'/assets/js/script.js\';
get_theme_file_uri( \'assets/js/script.js\' );
在没有孩子的主题中,所有三个选项都将输出
same URI; 但如果你发展了一个儿童主题:
选项1将链接到子主题目录中的文件,但不检查该文件是否存在。在这种情况下,我们需要将文件复制到子主题,即使我们不需要修改它选项2将链接到父主题中的文件;没有覆盖它的选项(好吧,可以使用一些过滤器挂钩来完成,但不能直接完成)使用选项3,如果不打算修改文件,可以将其保留在父主题中;或者,如果需要覆盖,可以将文件移动到子主题。不需要额外的代码。听起来很简单在内部,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()
也可用,但无论子主题是否处于活动状态,它们都将始终使用父文件文件。