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功能