发布日志时候,发现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
- //connect to the database
- mysql_connect(“host“,“user“,“password“);
- mysql_select_db(“db_name“);
- $sql = “select ID from wp_posts order by post_date asc;“;
- $result = mysql_query($sql) or die($sql);
- $original_id = 100001;//重设初始ID,避免和已有ID冲突,可以根据自己情况设置
- while($row = mysql_fetch_array($result))
- {
- //echo $row["ID"].”_”.$original_id.”<br />”;
- //change the ID for post/comments/category/etc
- $sql = “update wp_posts set id = “.$original_id.“ where id = “.$row["ID"].“;“;
- mysql_query($sql);
- $sql = “update wp_term_relationships set object_id = “.$original_id.“ where object_id = “.$row["ID"].“;“;
- mysql_query($sql) or die(mysql_error());
- $sql = “update wp_postmeta set post_id = “.$original_id.“ where post_id = “.$row["ID"].“;“;
- mysql_query($sql);
- $sql = “update wp_comments set comment_post_ID = “.$original_id.“ where comment_post_ID = “.$row["ID"].“;“;
- mysql_query($sql);
- $original_id++;
- }
- ?>
经过以上几步操作,wordpress已经完全屏蔽了revision功能,并且文章ID从100001开始自增长。为什么要从100001开始,而不是1呢?因为在刷新数据库的过程中,有可能出现重置ID与已有ID冲突的情况,从而发生数据库无法刷新的问题,因此重新对文章ID进行编码,选择了从100001起步。当然,如果ID数超过了10w,就需要更大的编码规则。
本站采用的是1种,即id不连续无妨,但可在发布日志后随时清除冗余数据,同时,为了现在wp自动草稿时间间隔太少的问题,在配置wp-config.php里增加3分钟自动草稿的设置
/** 单位是秒 */
define( ‘AUTOSAVE_INTERVAL’, 180 );

