url()函数不能在共享主机上工作

我创建的网站使用高级自定义字段插件,并且在我自己的虚拟主机上的本地主机上,一切正常。 不幸的是,当我将网站移动到客户购买的托管(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__);

应该返回/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目录开始( /home/content/06/10145906/html/file.php )。

这可能是问题吗?


据WordPress的Codex

You can either specify the $path argument as a hardcoded path relative to the
plugins directory, or conveniently pass __FILE__ as the second argument to make
the $path relative to the parent directory of the current PHP script file.

所以使用

plugins_url( basename( __DIR__ ) . '/path/to/plugin/asset.js' );

代替

plugins_url( '/path/to/plugin/asset.js', __FILE__ );

对我来说是可接受的解决方法。 虽然可能不像指定__FILE__那么敏捷。


你可以试试:

$this->dir = dirname(__FILE__);

如果您正在运行较新的PHP版本,请使用

$this->dir = __DIR__;


我希望这是因为你的服务器移动而出现的。

检查您的WordPress设置页面,以确保WordPress网址反映移动后的新网址。

如果这一切都是正确的,那么有些东西会覆盖WordPress的常量之一,WP_PLUGIN_URL或用于设置它的一个前体常量。 寻找的地方应该在wp-config.php文件中。

链接地址: http://www.djcxy.com/p/68661.html

上一篇: url() function not working on shared hosting

下一篇: Namespace packages with a core part?