wp_enqueue_script在本地xampp安装上的奇怪行为

时间:2016-12-21 14:51:15

标签: php wordpress path xampp

我想用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似乎没有帮助。

1 个答案:

答案 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上工作而没有问题。