我已经建立了一个网站使用了先进的自定义字段的插件,并且一切正常在本地主机上我自己的虚拟主机上。 不幸的是,当我移动网站,客户端购买(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
)。
莫非是这个问题?
据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__
虽然。
你可以试试:
$this->dir = dirname(__FILE__);
如果你正在运行新的PHP版本,使用
$this->dir = __DIR__;
我希望这也随之而来,因为你的服务器拉升。
检查你的WordPress设置页面,以确保WordPress的URL反映了移动后的新网址。
如果这是正确的,那么什么是压倒一切的WordPress的常量之一,无论是WP_PLUGIN_URL或用来设置它的前体常量之一。 的地方去寻找,这将是在wp-config.php文件。
这可能是现在用PHP做的(这是不是这样的旧版本)始终返回的“物理”地址__FILE__
忽略任何符号链接,等等。上帝知道(和PHP开发者)为什么会出现在PHP中没有设置来改变这种行为但作为WP这条道路比较中的URL已注册它改变它返回的URL的“休息”的正常行为,并返回的完整路径来代替。
这基本上意味着,WP和符号链接不很顺利的,只要食品仍然建议开发者使用__FILE__
创建URL路径,同时也有,不会打破在磁盘级别进行任何符号链接等方法来加载库。
这应该解决您的问题:
define('WP_CONTENT_DIR', realpath($_SERVER['DOCUMENT_ROOT'] . '/wp-content'));