Posted on 18-06-2011
Filed Under (技术) by waterlin

趁着今天有空,把 WordPress 维护了一把,不小心,碰到如下两个问题:

错误1:Call to undefined function wp_get_current_user()

我准备在后台把 WordPress 从当前版本升级到 3.1.3,可是却出现了如下错误提示:

Fatal error: Call to undefined function wp_get_current_user() in /home1/cookwhyc/public_html/wp-includes/capabilities.php on line 1028  

上 WordPress 官方论坛找了找几处说法,原因应该是一些插件还停留在旧版本的 WordPress 架构上,还会用旧方法调用 wp_get_current_user() 这类函数,引用一位人士的解释:

Esmi - the problem isn't that it isn't there. Its that current_user_can is being called by the plugin and for some reason although capabilities.php has been loaded (which contains the current_user_can function) that function calls wp_get_current_user which is defined in pluggable.php but hasn't been loaded when the call is made

I think its actually a bug in WordPress - the solution is to add a require_once call to the top of capabilities.php.

解决办法可以在 /wp-includes/capabilities.php 文件正式代码的开头,添加下面这行语句:

require_once('pluggable.php');

希望以后的 WordPress 版本自动兼容这些问题。

错误2:You do not have permission to access this page.

在解决了上述问题后,我在控制面板点击升级到 3.1.3 这个链接,却又出现了错误页面,提示以下错误:

You do not have permission to access this page.

这个问题比较怪异,除了无法通过 Network Admin 部分来管理站点外,其它一切都正常,包括博客的前端页面及各个独立博客的管理面板。

即使我手动升级 WordPress 到了 3.1.3,依然没有办法解决这个没有权限访问的问题。

这个问题应该是由于插件不兼容新版本的 WordPress 造成的,手动删除了该插件即可解决此类问题。

想要手动删除某个插件,直接到下面这个目录删除该插件即可:

/wp-content/plugins

在我这里,是由插件 Ad Inserter 造成的。不知道为什么,Ad Inserter 在我的 3.1.3 版本 WordPress 里使用就会有这个问题。

经验总结:升级 WordPress 之前,一定要先把所有的插件都关闭,然后仔细地检查一下所有的插件是否兼容新版本的 WordPress,否则就很难找到具体是哪个插件出了问题。

© 2011, 浏忙大爆炸. All rights reserved.
除非注明,浏忙大爆炸文章均为原创,转载请以链接形式标明本文地址。

Post a Comment
Name:
Email:
Website:
Comments: