这两天在折腾主题,有时候觉得这个好看有时候觉得那个好看,于是就换来换去的。这不就换出问题了。
在一次换回原主题的过程中,浏览器界面卡住不动,再一刷新就出现了http500内部服务器错误。第一感觉就是当前切换的主题出问题了,进而导致整个网站前台和后台都进不去了。
解决方法有2种,推荐第1种,比较简单:
1、通过FTP软件(虚拟主机一般就只有FTP)进入网站的主题目录wp-content/themes,把切换的那个有问题的主题文件夹改名即可重新进入WordPress后台。进入后台会遇到提示,主题目录被破坏恢复到默认主题。
2、通过修改数据库解决。登录phpMyadmin,找到安装wordpress的数据库,执行下面的SQL语句(wp_options中的wp是数据库前缀,改为当初安装时设定的;twentytwelve是举例的主题名称,改为切换时出问题的主题名称):
SELECT * FROM `wp_options` WHERE `option_value` = 'twentytwelve' LIMIT 0 , 30;
一般出现3行结果,option_name分别是template、stylesheet、current_theme,修改为没出问题的主题名称即可。
这时候网站已经恢复到默认主题(即一开始安装完wordpress后系统自带的三款主题之一),我开始找主题的原因。
打开Apache的error_log文件,找到如下的错误信息:
[Sat Mar 16 21:26:27.637761 2013] [:error] [pid 1100] [client 180.108.184.166:56042] PHP Fatal error: Cannot redeclare remove_more_jump_link() (previously declared in /data/www/default/wp-content/themes/zbench/functions.php:43) in /data/www/default/wp-content/themes/zbench/functions.php on line 486, referer: https://qiushuiyibing.com/wp-admin/themes.php
出现PHP致命错误是因为一个函数remove_more_jump_link的重申明出现错误。原来,是我当初在主题的functions.php里加了一些自定义的代码来优化显示效果,比如去除wordpress的链接含有more-link,自定义后台登录界面等。我在默认主题twentytwelve中添加了这几个函数后,再切换到别的主题,wordpress会自动将这些自定义的函数添加到新主题的functions.php中。然后我又重新将这几个函数添加到新主题中,进而导致函数名重复,出现PHP致命错误。
原因找到了就容易解决了。将自己添加的那些函数全部删除后,切换主题恢复正常。
出现这次故障的问题虽然解决了,但还是有不少地方需要在将来注意的。
1、主题一般是不能随意切换的,固定使用一款主题后,最好是在这款主题的基础上修修改改或者安装插件,因为插件不可能兼容于所有主题;
2、写文章时,一定要统一风格,最好不要过多使用一些自定义的html标签;
3、如果之前使用的主题自带SEO功能,那么更换主题后的主题最好也要有SEO功能,否则需要用插件来实现;
4、更换主题之前,需要确认当前的全部插件是否与更换的主题兼容,有一些主题附带的功能会与某些插件存在冲突,更换前需要好好检查;
5、重新加入统计跟踪代码。常见的统计跟踪工具(如Google Analytics、cnzz等)代码一般添加到footer.php中,切换主题时也要注意添加到新主题中。(建议最好用插件实现添加统计代码,如Google Analytics)
转载请注明:秋水逸冰 » wordpress更换主题报错解决方法