发布日志时候,发现ID不连续,原来是自动存草稿造成的。搜索了一下,找到解决方案。

1种是保持ID不连续现状(写日志即时保存还是有好处的),删除草稿和版本,这个可去除数据库冗余

可以用插件1:http://www.bianjichuban.com/blog/wp-content/uploads/2009/10/wpcleaner_1.0.2.zip下载wp-cleaner插件安装

或者用插件2:http://www.bianjichuban.com/blog/wp-content/uploads/2009/10/delete-revision.1.3.1.zip 下载Delete-Revision

或者手动删除Revisions垃圾信息,请执行如下的sql语句:

    delete from wp_posts where post_type = revision;

2种是为了洁癖,ID必须连续,那么代价是可能会写了很多内容,最后提交时候网络万一出错,那么在重新费劲写一遍

以下是引用:

一. 首先,需要disable掉revision功能:

1. 修改”wp-config.php”文件,加入如下设置:

    define(WP_POST_REVISIONS, false);
    建议添加在define (’WPLANG’, ‘zh_CN’);下面

2. 还需要安装一个插件,来disable掉自动保存和revision的功能。在这里安装“禁用WordPress自动保存的插件”http://www.bianjichuban.com/blog/wp-content/uploads/2009/10/disable-autosave.zip,在WordPress后台启用此插件安装并激活即可(后台设置里面取消自动保存和revision功能)。

二. 删除冗余的revision信息

参考1种

三. 将ID重置为连续数字

清除完revision之后,就可以进行重置ID的操作了。
这一步操作有一定的风险,因为ID重置以后,如果是使用ID作为永久链接的标识,搜索引擎就需要重新抓取你的网站,而以前的索引就有可能全部失效(或进入不相应的页面)。

在这里,网友一个小脚本来对数据库进行刷新,代码如下:

    <?php

  1. //connect to the database
  2. mysql_connect(host,user,password);
  3. mysql_select_db(db_name);
  4.  
  5. $sql = select ID from wp_posts order by post_date asc;;
  6. $result = mysql_query($sql) or die($sql);
  7. $original_id = 100001;//重设初始ID,避免和已有ID冲突,可以根据自己情况设置
  8.  
  9. while($row = mysql_fetch_array($result))
  10. {
  11.     //echo $row["ID"].”_”.$original_id.”<br />”;
  12.  
  13. //change the ID for post/comments/category/etc
  14.  
  15.     $sql = update wp_posts set id = .$original_id. where id = .$row["ID"].;;
  16.     mysql_query($sql);
  17.  
  18.     $sql = update wp_term_relationships set object_id = .$original_id. where object_id = .$row["ID"].;;
  19.     mysql_query($sql) or die(mysql_error());
  20.  
  21.     $sql = update wp_postmeta set post_id = .$original_id. where post_id = .$row["ID"].;;
  22.     mysql_query($sql);   
  23.    
  24.     $sql = update wp_comments set comment_post_ID = .$original_id. where comment_post_ID = .$row["ID"].;;
  25.     mysql_query($sql);
  26.  
  27.     $original_id++;
  28.     }
  29. ?>

经过以上几步操作,wordpress已经完全屏蔽了revision功能,并且文章ID从100001开始自增长。为什么要从100001开始,而不是1呢?因为在刷新数据库的过程中,有可能出现重置ID与已有ID冲突的情况,从而发生数据库无法刷新的问题,因此重新对文章ID进行编码,选择了从100001起步。当然,如果ID数超过了10w,就需要更大的编码规则。

此外,更新原有id也可以参考1参考2参考3

本站采用的是1种,即id不连续无妨,但可在发布日志后随时清除冗余数据,同时,为了现在wp自动草稿时间间隔太少的问题,在配置wp-config.php里增加3分钟自动草稿的设置

/** 单位是秒 */
define( ‘AUTOSAVE_INTERVAL’, 180 );