8

我建立的网站使用高级自定义字段插件,并且在我自己的网络主机上的本地主机上一切正常。不幸的是,当我将网站移至客户购买的主机(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/content/06/10145906/html/file.php)。

这可能是问题吗?

4

5 回答 5

4

根据Wordpress 法典

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__

于 2013-10-25T08:32:21.370 回答
1

你可以试试:

$this->dir = dirname(__FILE__);

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

$this->dir = __DIR__;

于 2013-01-18T05:07:21.640 回答
0

这很可能与 PHP 现在有关(在旧版本上不是这样)总是返回__FILE__忽略任何符号链接等的“物理”地址。上帝知道(和 PHP 开发人员)为什么 PHP 上没有设置来改变这种行为但是当 WP 将该路径与其已注册的 URL 进行比较时,它会更改返回 URL 的“其余”并返回完整路径的正常行为。

这基本上意味着只要 Codex 仍然建议开发人员使用__FILE__创建 URL 路径来加载库,WP 和符号链接就不能很好地进行,而还有其他方法不会破坏在磁盘级别完成的任何符号链接。

于 2014-02-05T18:32:41.400 回答
0

我希望由于您的服务器移动而出现这种情况。

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

如果这一切都正确,那么某些东西正在覆盖 WordPress 的常量之一,即 WP_PLUGIN_URL 或用于设置它的前驱常量之一。在 wp-config.php 文件中寻找它。

于 2013-01-18T05:06:11.257 回答
0

这应该可以解决您的问题:

define('WP_CONTENT_DIR', realpath($_SERVER['DOCUMENT_ROOT'] . '/wp-content'));
于 2016-08-07T15:19:15.497 回答