2

WordPress下文章id不连续原因及解决方法

Posted by 撒得一地 on 2016年1月8日 in wordpress笔记

在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少产生!

    • 撒得一地说道:

      是的,很难,因为文章表里面存储的文章类型太多了,有发布文章,草稿文章等等。。

Comments are closed. Would you like to contact the author directly?
网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.