WordPress下文章id不连续原因及解决方法
在Wordpress中,如果使用文章id作为固定链接的话,那么应该都会发现一个奇妙现象:博客明明发表的文章不多,但有时候文章id却非常大。就比如我来说,我的博客发表的文章也就一百多篇,但是文章id却已经达到了一千四百多。如果仅仅是文章id变大,那倒没什么要紧,关键是数据库文章表(wp-post)存储内容也跟着变大。这会影响到文章的编辑以及发表页面的载入速度,同时,冗余数据太多的话也会影响到数据库的工作效率。
那么,为什么会这样?其实这是Wordpress本身机制引起的。出于数据保护,Wordpress自带有自动保存文章草稿和文章修订记录的功能。当你在后台编辑文章时,WordPress默认是每60秒就会对文章进行自动保存,而且每保存一次,在数据库文章表中都是新添加一条记录。同时,在你还没发布文章前,当你修改一次文章,然后进行草稿保存后,在数据库文章表中也会新加一条修订记录,这样保证了在误修改的情况下可以还原之前的内容,专业术语称之为版本控制。
作为小站点来说,文章修订其实没有多大必要。自动保存可以保留着,但自动保存时间可以设置得稍微长一些。
1.取消自动修订、延迟自动保存时间
打开站点根目录下的wp-config.php文件,搜索"require_once(ABSPATH . 'wp-settings.php');"。然后在这条语句的前面添加下面代码:
//自动保存30分钟一次 define('AUTOSAVE_INTERVAL', 1800); //取消自动修订版 define('WP_POST_REVISIONS',false);
这样虽不能保证文章id绝对连续,但只要控制好自动保存次数,基本上可以达到连续。而且,减少了数据库文章表数据量,加快了查询速度。
2.删除数据库文章表的文章修订(草稿)记录
在操作数据库前,大家最好先对数据库进行备份,以免因为误操作引起的不便。
sql语句1:
delete from wp_posts where post_type='revision';
如果更改了数据库表名的前缀,需要将数据表名称中wp改成你的前缀。上面的操作十分简便,但不好的一点是可能一些关联表的数据没清除干净。
附上更完整的sql语句2:
DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision'
提示:使用上面sql语句前最好做好数据库备份。
3.是否对之已面发布的文章进行id重新排列?
网上有一些教程,可以对之前已经发布的文章进行重新排列。对于固定链接没使用到文章id来说,重新排列影响不大。但是对于固定链接使用到文章id,而且文章链接已经被搜索引擎抓取了,这种情况下最好不要重新排列。因为重新排列id后,原文章链接可能出现变化,导致之前的链接出现死链接,或者页面跳转异常,这对SEO非常不友好。
如果不再乎影响,具体操作可以参考:
http://www.ludou.org/wordpress-post-id-continuous.html
本文地址: http://coderschool.cn/1481.html 转载请注明。
2 Comments
使用了各种方法,还是未能完全杜绝这个问题,只能是尽可能的让ID少产生!
是的,很难,因为文章表里面存储的文章类型太多了,有发布文章,草稿文章等等。。