彻底解决WordPress文章ID不连续的问题
涛涛友情提示:本文所谈到的方法不适用于WordPress3.1及其以后版本,如有解决办法,会及时更新。
涛涛承认自己是个ID控,接触WordPress时间不长,但是绝对不能容忍乱七八糟的ID,写一篇长点的文章能给我占用N多ID,占着茅坑不拉屎还像话么?
言归正传,首先需要说明,网上也有类似帖子,但是根治不彻底,比如新建文章从旧的ID开始排列,很让我讨厌,步骤如下:
1、您需要备份自己的数据库和需要更改的相关文件。
2、安装插件WP Cleaner,作用是删除所有冗余修订版,也就是草稿文章,该操作是不可逆的,涛涛测试没有问题,但是还是建议大家做好备份。
3、修改已有文章ID,SQL脚本,请在phpmyadmin中执行。由于涛涛的文章少,所以手动执行的,本步骤会影响到搜索引擎的收录,下面提供两个方法:
方法A,自动重新排列搜有文章ID,此方法未经涛涛测试,慎重使用:
ALTER TABLE 'wp_posts' DROP 'ID'; OPTIMIZE TABLE 'wp_posts'; ALTER TABLE 'wp_posts' ADD 'ID' BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
方法B,手动执行,每次更改一篇文章的ID,如果文章多,工作量会比较大:
update wp_posts set id = 1 where id = 100; update wp_term_relationships set object_id = 1 where object_id = 100; update wp_postmeta set post_id = 1 where post_id = 100; update wp_comments set comment_post_ID = 1 where comment_post_ID = 100;
本命令的含义是将ID为100的文章ID改为1,注意先后顺序。
4、打开wp-config.php文件,在 $table_prefix = ‘wp_’; 前面添加代码
define('WP_POST_REVISIONS', false); define('AUTOSAVE_INTERVAL', false);
含义在于关闭默认的版本记录以及自动保存草稿功能。
5、在以下两个文件中找到代码 wp_enqueue_script(‘autosave’); 给他注释或者删掉:
wp-admin\post-new.php(大概位置46行)
wp-admin\post.php(大概位置177行)
6、找到并打开 wp-admin\includes\post.php 文件,找到 if ( $create_in_db ), 在它的前一行添加
$create_in_db = false;
7、安装插件 Restore Post Id,作用是恢复文章ID,新建文章将接着之前重新排列后的ID开始,也可以手动执行SQL命令:
alter table wp_posts AUTO_INCREMENT=N
这里的N是你需要新建文章时开始的ID,比如之前最后一篇文章的ID是100,这里N就等于101。
通过以上7步骤, 就可以完全解决WordPress文章ID不连续的问题了,有洁癖的童鞋一起行动吧!
哦,对了,还有一点忘了,至于博文中的图片,不要用WordPress中上传工具上传,那样图片会占用一个ID,建议使用FTP上传后直接插入。
tunpishuang
2011 年 01 月 21 日 下午 1:50
wp_posts里面的post_type可以是attachment,post,page,revision这4种,博主的page的id是怎么处理成连续的? :yw
涛涛
2011 年 01 月 23 日 下午 6:35
最近有事,今天才看到。
attachment是附件,用FTP上传;revision是版本记录,也就是自动保存的;Page不清楚是神马东西,貌似没有研究过,不过按照这个办法完全可以解决ID不连续的问题。
康橋elish
2011 年 04 月 18 日 上午 9:19
page就是页面嘛,页面也会占用Post id的。
smilebull
2010 年 12 月 12 日 下午 4:59
我直接delete from wp_posts where post_type = ‘revision’;清除,只是ID连续还不行
涛涛
2010 年 12 月 12 日 下午 5:23
@smilebull, ID不连续可能还因为你上传的图片文件占用了ID,到数据库POST下面查一下就知道了。
风花絮
2012 年 12 月 04 日 下午 11:04
是用什么样的命令?谢谢!
涛涛
2012 年 12 月 04 日 下午 11:33
你想达到什么目的?需要的执行的命令在文中已经有写到。 😀
smilebull
2010 年 12 月 11 日 下午 5:39
不错不错,做个记号,慢慢学习 :gz
涛涛
2010 年 12 月 11 日 下午 5:51
@smilebull, 没什么可学习的,这个完全可以不用插件实现,我觉得用SQL命令比插件要干净。我后台安装的清理的插件是WP Cleaner,觉得比较好。
无名
2010 年 12 月 04 日 下午 9:03
貌似我对ID没有多大的要求!
只要文章能显示就可以了……
涛涛
2010 年 12 月 04 日 下午 9:08
@无名, 我看着就难受,想当初,写了5篇文章,ID就到100多了,真不知道WP的工程师是怎么想的。。。
Dianso
2010 年 11 月 23 日 下午 4:12
这么复杂,又专门的工具都,连评论都能自动转移
涛涛
2010 年 11 月 23 日 下午 4:55
@Dianso, 貌似我笨拙,没有找到此类工具。
Dianso
2010 年 11 月 23 日 下午 7:08
@涛涛, http://www.ludou.org/wordpress-post-id-continuous.html
oalleno
2010 年 11 月 20 日 下午 4:54
有个笨办法,就是一次性连续建立草稿,ID号自然就连续了…
涛涛
2010 年 11 月 20 日 下午 5:00
@oalleno, 这个。。。囧。。。
重庆时时彩
2010 年 11 月 20 日 下午 1:07
不明白这个是什么意思
涛涛
2010 年 11 月 20 日 下午 1:27
@重庆时时彩, 就是说,每篇文章都会有一个唯一的数字编号,这个就是ID,最新的WP版本里这个玩意很乱,不连续,然后需要让所有文章都连续在一起。