首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WordPress的plugins_url()函数不适用于共享主机

WordPress的plugins_url()函数不适用于共享主机
EN

Stack Overflow用户
提问于 2013-01-18 02:27:23
回答 5查看 6.5K关注 0票数 8

我构建的一个站点使用了高级自定义字段插件,并且在我自己的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)

我将问题追溯到插件中的以下一行:

代码语言:javascript
复制
$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)开始。

这就是问题所在吗?

EN

回答 5

Stack Overflow用户

发布于 2013-10-25 08:32:21

根据Wordpress代码库

您可以将$path参数指定为相对于插件目录的硬编码路径,也可以方便地传递__FILE__作为第二个参数,使$path相对于当前PHP文件的父目录。

所以用

代码语言:javascript
复制
plugins_url( basename( __DIR__ ) . '/path/to/plugin/asset.js' );

而不是

代码语言:javascript
复制
plugins_url( '/path/to/plugin/asset.js', __FILE__ );

对我来说是可以接受的解决办法。但是,可能不如指定__FILE__那么灵活。

票数 4
EN

Stack Overflow用户

发布于 2013-01-18 05:07:21

你可以试试:

$this->dir = dirname(__FILE__);

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

$this->dir = __DIR__;

票数 1
EN

Stack Overflow用户

发布于 2013-01-18 05:06:11

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14391522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档