忙了几天,晕头转向,有几天都要弄到凌晨两点才愿意去睡,明明已经超困了,但是看到那些该死的问题和错误,我实在是放不下心去睡觉啊。各位别介意,忍不住发几句牢骚,马上转入正题吧。这几天让我困扰的东西就是wordpress这博客神器了。我以前写过wordpress相关的文章,但不深入,只是比较浅显的东西,因为那个时候我研究比较多的是dedecms,现在我就给大家总结一下我这几天碰到的一些问题和解决方法。
搭建服务器、安装wordpress之类的基础东西我就不再重复赘述了,大家可以看看之前写的文章,叫《身为站长的我分享给新人的一些经验》。今天我要讲的东西是比之前深入一点的,可能大家已经碰到或者以后将会碰到的问题。
1、主题模板问题
相信99%的站长使用wordpress必定是用模板的,而不是自己开发的,因为wordpress身为国外最知名的cms,拥有无数的粉丝和用户者,自然资源群是非常庞大的,各类插件和主题数不胜数,在国内也渐渐变得十分的流行。不过很重要的一点是,许多模板都是抄袭后稍作修改的daoban作品,这类作品最大的缺陷是,一次性。何为一次性呢?就是只有一个版本,不再更新,因为它是抄袭的,完全没必要跟着原版去更新。这类主题因为长期不更新,很容易存在bug,大家可以打开wp_config.php这个wordpress配置文件,找到里面的一行代码,叫 define('WP_DEBUG', false),把其中的false参数改成true。这个是主题开发者常用的功能,开启后,登陆wordpress,会出现debug反馈,你可以看看你的主题文件是否有问题。通常问题都出在xxx_options.php这个文件。此文件是主题在wordpress后台的设置页面,目的是方便新手站长设置网站,但是很多偷盗者抄袭的主题,这里都会有问题,而这个问题导致的直接结果就是在wordpress后台处理完操作项返回空页面。如果debug反馈的信息中,包含xxx_options.php和wordpress本身的pluggable.php,那么问题就出在xxx_options.php这个文件的编码问题。wordpress的后台php文件的默认编码是ANSI,而作者开发的主题通常是UTF-8,这没有问题,问题在于部分主题是带BOM的UTF-8,就是带签名的,比普通的UTF-8在文件头部多了几个看不见的16进制。解决的办法是,用UltraEdit打开文件,另存为无BOM的UTF-8即可。大家可以多利用define('WP_DEBUG', true)这个功能去解决平常碰到的一些问题,遇到解决不了的记得用搜索引擎去找答案。
2、主题里的functions.php
我不知道这个是通病还是某些主题作者比较恶心人,如果你在ftp里直接覆盖修改过的functions.php,结果是两个文件里的内容合并,而不是覆盖。另外,在你切换主题的时候,这类恶心的主题也会把其他主题的functions通通合并到它的functions.php下,这样会导致某些功能函数冲突,导致wordpress后台和网站前台都打不开,即便打开了也很慢,严重的还会导致服务器崩溃。所以大家最好要注意functions.php这个文件的使用,在ftp上修改的时候,最好删掉之后重新上传,而不要直接覆盖。
3、插件与新版本的wordpress兼容问题
当你打开define('WP_DEBUG', true)后,你会很容易看到,wordpress提醒你,在2.X以后的版本,wordpress修改了很多地方,在头部信息返回的问题上与之前的版本有较大差异,长期不更新的插件可能会出现兼容性问题,这个时候,你要做的就是按照debug提示修改插件里的文件。例如Delete-Revision这个好用的插件因为作者已经停止更新了,所以在兼容性上有点问题,你要把add_options_page('Delete-Revision', 'Delete-Revision','8', basename(__FILE__), 'my_options_delete_revision')改成add_options_page('Delete-Revision', 'Delete-Revision','manage_options', basename(__FILE__), 'my_options_delete_revision')。其他的插件也差不多,需要修改里面传递的参数,只要稍微懂一点开发知识的站长,解决起来并不难。
4、去掉wordpress自带多余的头部信息
你可以打开一个wordpress搭建的网站页面,查看源代码,你会发现在<head></head>中间有大量的标签,很多其实是完全没有必要的,只会延缓页面载入速度,造成服务器负担而已。下面我就列出通常需要去除的多余头部标签:
remove_action( 'wp_head','wp_generator');
remove_action( 'wp_head','rsd_link');
remove_action( 'wp_head','wlwmanifest_link');
remove_action( 'wp_head','wp_shortlink_wp_head', 10, 0);//去掉shorlink标签,固定链接优化后,shortlink反而是带?的动态,比起伪静态差远了,还会让搜索引擎认为是重复内容。
remove_action( 'template_redirect','wp_shortlink_header', 11, 0);
add_filter('show_admin_bar','__return_false');//移除网站后台登陆后,前台显示的admin条
remove_action( 'wp_head', 'index_rel_link');
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
remove_action('wp_head', 'adjacent_posts_rel_link_wp_head');//去除标签中pre、next这样的标签(看似有用,实则无用)
|