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

Posted

技术标签:

【中文标题】wp_enqueue_script 在本地 xampp 安装上的奇怪行为【英文标题】:strange behavior of wp_enqueue_script on a local xampp install 【发布时间】:2017-05-07 01:01:31 【问题描述】:

我想用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,而在网页上它会正确返回文件的绝对路径。

(请注意,如果我使用 get_template_directory_uri,上述内容 - 至少 filemtime 部分会失败。)

在我的本地 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 上的 home url 和本地 windows 路径之间的奇怪结合。

wp_normalize_path 似乎没有帮助。

【问题讨论】:

【参考方案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 上正常工作。

【讨论】:

以上是关于wp_enqueue_script 在本地 xampp 安装上的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章

php 在Wordpress中使用'wp_enqueue_scripts'操作将Vue.js排入队列

有没有办法使用wp_enqueue_script直接添加JavaScript?

Xam 表单中的 ModernHttpClient。在最新版本中是不是有必要?

javascript 强制打开新标签Gist Github页脚/元链接 - 子主题wp_enqueue_script功能

html WordPress的,wp_enqueue_scriptsしたファイルに条件付きコメントを付ける。

无法使用Xam.Plugin.Media插件