您当前位置: 首页 »

WordPress

标签归档: WordPress

WordPress 不兼容插件引发的惨案

前言

WordPress 从 2.x 升级到了 3.0.1,又恰逢更换了主机,从原来Windows的主机切换到了Linux主机上。

惨剧

某天在后台发现有插件可以更新了,于是点了自动更新,然后杯具的事情发生了,自动更新失败,以为是权限问题,登上FTP,到处查看修改权限,无果,于是念叨这主机是不是有问题,不能通过它访问网络?是不是差劲了点?然后手动上传覆盖了好几个插件的更新……

再过了几天,发现模板不支持3.0的菜单功能,于是换了模板,加入菜单,又发现了问题,新建菜单可以成功,但是不能修改,每次修改都失败……

随即要添加文章,新的问题又来了,新添的文章会自动生成固定链接,因为觉得固定链接生成的不是很好,想修改掉,结果也不能修改……

这下可让我烦起来了,想想肯定是哪里出问题了,静下心想了想,后台凡是Ajax的操作均无响应,并且数据也没有更新,之前出问题的部分都涉及Ajax,是不是这里出问题了?

上帝保佑

马上开启Firefox,用Firedebug查看XHR数据,发现admin-ajax.php返回HTTP响应头为

HTTP/1.1 500 Internal Server Error

很明显,后台程序运行出错了,WP本身应该不会烦这么低级的错误,我又没改过后台的代码,那么应该是插件引起问题无疑了,在wp-config.php文件中激活调试

define('WP_DEBUG', true);

然后在错误日志文件中找到了一些与插件文件相关的错误,将这些插件逐个禁用/启用排查问题,结果发现只要将“Wordpress Thread Comment”插件(作者:偶爱偶家)禁用之后这些Ajax操作就都正常了,所以确定该问题是由“Wordpress Thread Comment”插件导致

PS: 今天(2011年1月8日)升级及添加了些插件,发现又出了这个问题,这次查出来是“All in One SEO Pack”这个插件导致,抱着试试看的态度重新启用“Wordpress Thread Comment”插件,发现又可以用了……

结局

就这样,之前所有的问题(包括自动更新的问题)就都解决了,不兼容插件惹的祸啊~ 差点错怪主机提供商了,汗~~

WordPress使用固定链接后出现404错误的另一种情况

在导入网站数据到本地站点测试固定链接时出现了404错误,特点是首页也显示404错误,即使仅使用PATHINFO形式的URL也会出现404错误,和网上查到的大多数情况不同的是这里的mod_rewrite已经是启用的了,经过排查,原来错误很简单,常规选项里面的“博客地址 (URL)”设置没有设置正确(由于是导入的数据),修改该选项为正确的URL后,固定链接就可以正常使用了。

WordPress 的“维护模式”

不知是什么时候起(似乎是WP2.7+),WP提供了“维护模式”,在一次升级插件失败的时候我才发现了这个维护模式,激活“维护模式”的方法为:在WP根目录创建一个名为“.maintenance”的文件(注意开头的点号),文件内容为:

<?php $upgrading = 1262304000; ?>

其中的的数字为 Unix 时间戳,可以通过 PHP 函数 time() 以及 strtotime() 获得,在这个时间戳所指定的时间以及之后的600秒钟之前,WP将处于维护模式,访问任何页面都会显示“Briefly unavailable for scheduled maintenance. Check back in a minute.”。

如果你嫌计算时间太麻烦,并且想自己手工切换到非“维护模式”,可以直接使用以下代码作为“.maintenance”的文件内容:

<?php $upgrading = time(); ?>

我们还可以自定义显示的内容,只要在wp-settings.php中找到这句话的附近并修改为你想要显示的内容即可,WP2.9中,这句话位于139行左右。为“维护模式”专门设计一个页面看起来是个好主意。