解决 WP 不能删除分类的问题
在老帕的 Blog 上看到他说“分类名称居然编辑不了”,我没有问具体情况,但大概猜是怎么回事,因为我两个星期前刚升级 WP 2.3 的时候也遇到了这个问题。事实上除了分类名称编辑不了,分类也无法被删除,甚至在 comment 管理模式下,也不法对评论作任何操作 (spam/delete/edit)。无论怎么,WP 都会说 “You don’t have permission to do that“,尽管我已经以管理员的身份操作。本质上说,只要操作是 Ajax 效果的,就会产生以上的后果。
解决办法:
一、使用一个名为 AJAX Referer Fix 的插件,激活后就自动纠正该问题。 二、如果上面的插件解决不了问题(比如我的情况就不行),就稍微麻烦一点了。需要修改一个文件,把 wp-includes/pluggable.php 的第 358-364 改上一改。
改之前: > $cookie = explode('; ', urldecode(empty($POST['cookie']) ? $GET['cookie'] : $_POST['cookie'])); // AJAX scripts must pass cookie=document.cookie
foreach ( $cookie as $tasty ) { if ( false !== strpos($tasty, USER_COOKIE) ) $user = substr(strstr($tasty, '='), 1); if ( false !== strpos($tasty, PASS_COOKIE) ) $pass = substr(strstr($tasty, '='), 1); }</code>改之后:
< $user = $COOKIE[USERCOOKIE]; < $pass = $COOKIE[PASSCOOKIE];
如此一来,大功告成。
参考: http://trac.wordpress.org/ticket/3807 http://sparepencil.com/code/ajax-referer-fix/
WordPress 升级到 2.3 遇到的插件不兼容问题
也许有朋友注意到我的侧栏中显示的 Akismet 抓住的 spam 数量只有区区的两百多个,这个数字原来是四万多,这是因为我使用了新的数据库。我为什么要用新的数据库呢?我是被逼的。我怎么被逼的呢?下面说说。
Wordpress 2.3 到了 RC1 的时候我开始升级,哪知升级数据库的时候报了一大堆错,但使用起来却没有看出什么问题,搞的我摸不着头脑。接下来才发现,我做任何数据库操作都会导致 Wordpress 抱怨,说什么 wp.wp_* 的表找不到。当然找不到,WordPress 中所有的表都是以 wp_ 开头的。但为什么会有这个抱怨我也实在想不到原因,唯一可以试试的就是导出所有的文章,重建数据库然后导入文章。这样一来全新的数据库可以排除掉很多的隐患。
结果,新的数据库也是同样的报错。十分郁闷之下,开始排查插件,终于发现是 Google XML Sitemaps 导致的错误,我之前用的是 3.0 Beta7,升级成 3.0 正式版就没问题了。
用 Google XML Sitemaps 的朋友应该不少,给大家提个醒,别像我一样走了弯路。另外如果不是很着急的话,可以暂缓升级到 2.3,2.3 的变化比较大,尤其是数据库结构,导致很多插件直接报废没商量。而且还有些莫名其妙的问题,比如我这篇文章就发了好几次才发布成功。等过一段时间,一切稳定下来,常用的插件升级到 2.3 compatible 后再升级 WordPress 会比较不容易导致问题。

