我想用wp_enqueue_script
调用js文件。
我使用get_template_directory()
,如下所示:
$myfile = wp_normalize_path(get_template_directory().'/js/script.js');
$myversion = filemtime($myfile);
wp_enqueue_script('myscript', $myfile , array( 'jquery' ), $myversion, true );
这适用于服务器:如果我回显$myfile
,它会返回一个真实路径,如/home/public_html/folder/wp-content/themes/mytwentysixteen/js/script.js
,而在网页上它会正确返回文件的绝对路径。
(请注意,如果我使用filemtime
,上述内容 - 至少get_template_directory_uri
部分 - 将会失败。)
在我的本地xampp安装(Windows机器)上,这不起作用。
如果我echo $myfile
,则返回正确的本地路径:
D:/path/to/folder/wp-content/themes/mytwentysixteen/js/script.js
但是,在wp_enqueue_script
之后,在网页上会返回如下内容:
http://localhost/folderD:pathtofolder/wp-content/themes/mytwentysixteen/js/script.js
并且页面无法检索脚本。 这似乎是localhost上的主页和本地windows路径之间的奇怪结合。
wp_normalize_path
似乎没有帮助。
答案 0 :(得分:1)
显然,解决方案是get_template_directory()
不应该用于排队脚本,但它应该用于像filemtime
这样的php函数。
因此,解决方案是将两者分开,如下:
$myfile = get_template_directory_uri().'/js/script.js';
$myversion = filemtime(get_template_directory().'/js/script.js');
wp_enqueue_script('myscript', $myfile , array( 'jquery' ), $myversion, true );
在这里,我使用get_template_directory_uri()
来检索脚本,使用get_template_directory()
来获取文件的时间戳,并且两者都在xampp上工作而没有问题。