我构建的一个站点使用了高级自定义字段插件,并且在我自己的web主机上的本地主机上一切都很好。不幸的是,当我将站点移到客户端购买的主机(GoDaddy共享托管)时,高级自定义字段插件的JavaScript和CSS文件没有正确加载。检查源时,问题很明显--它们指向以下路径:
http://www.clientsamazingwebsite.com/wp-content/plugins/home/content/06/10145906/html/wp-content/plugins/advanced-custom-fields/js/input-actions.js?ver=3.5.7.2
(如果仔细查看,可以看到服务器上的文件的实际路径是引用的,而不是URL)
我将问题追溯到插件中的以下一行:
$this->dir = plugins_url('',__FILE__);It 应该返回/wp-content/plugins/advanced-custom-fields
相反,它正在返回/wp-content/plugins/home/content/06/10145906/html/wp-content/plugins/advanced-custom-fields
我已经编辑了插件文件,以便它指向正确的路径,但是每次插件更新时,这些更改都会恢复,所以这不是一个长期的解决方案。
我见过一些人抱怨说,__FILE__魔术常量不能像预期的那样在符号链接中工作,但我肯定没有创建任何符号链接。这是使用GoDaddy的限制吗?
更新
我注意到__FILE__在GoDaddy上返回的内容与我的本地机器或其他web服务器不同。其中一台工作机器从文件系统的根目录(即/srv/www/sitename/public_html/file.php)返回完整的路径,而在GoDaddy上,返回的路径从主目录(/home/content/06/10145906/html/file.php)开始。
这就是问题所在吗?
发布于 2013-10-25 08:32:21
根据Wordpress代码库
您可以将$path参数指定为相对于插件目录的硬编码路径,也可以方便地传递__FILE__作为第二个参数,使$path相对于当前PHP文件的父目录。
所以用
plugins_url( basename( __DIR__ ) . '/path/to/plugin/asset.js' );而不是
plugins_url( '/path/to/plugin/asset.js', __FILE__ );对我来说是可以接受的解决办法。但是,可能不如指定__FILE__那么灵活。
发布于 2013-01-18 05:07:21
你可以试试:
$this->dir = dirname(__FILE__);
如果您正在运行更新的PHP版本,请使用
$this->dir = __DIR__;
发布于 2013-01-18 05:06:11
我想这是因为你的服务器移动而出现的。
检查您的WordPress设置页面,以确保WordPress URL反映移动后的新URL。
如果这一切都是正确的,那么有些东西正在覆盖WordPress的一个常量,要么是WP_PLUGIN_URL,要么是用来设置它的前体常量之一。查找的位置应该在wp-config.php文件中。
https://stackoverflow.com/questions/14391522
复制相似问题