WordPress

wordpress文章ID不连续的比较完美的解决办法(有重要更新)

猴猴 · 3月8日 · 2011年 · 1273次已读

首先,我承认我有ID强迫症,看到那不连续的ID号我就浑身不舒服。在犹豫了很久之后,今天下午终于对我亲爱的博客动刀了。找了很多方法,又仔细的对比了一下,还是发现下面的方法比较好。也推荐个有这种癖好的站长使用。。。

WordPress有一个很讨厌的功能文章的版本控制,在默认的情况下,日志的ID将不再连续,加之wordpress的自动保存草稿功能,使用ID做为固定链接结构的用户将会看到文章日志的ID越跳越大。下面介绍的方法,可以清除数据库垃圾,彻底解决文章ID不连续的问题。

1、备份数据库和需要修改的相关文件。这是一个良好的习惯,可以避免很多悲剧的事情发生,切记!!!

2、进入数据库,运行SQL查询,执行以下命令

delete from wp_posts where post_type = 'revision';
    此命令在于删除Posts中的垃圾数据。

3、选中所有表,在[选中项]中选择优化表,执行。

4、修改文章ID。这个如果你文章多的话将会是个艰巨的工程。附注:请先看文章尾部的说明再进行这一步的操作,你会省去很多力气和时间!

update wp_posts set id = 1 where id = 10;
update wp_term_relationships set object_id = 1 where object_id = 10;
update wp_postmeta set post_id = 1 where post_id = 10;
update wp_comments set comment_post_ID = 1 where comment_post_ID = 10;

上面示例代码意义为:把ID=10修改为ID=1。请根据自己的文章ID更改,

5、打开wp-config.php文件,在 $table_prefix = ‘wp_’; 前添加以下代码

define('WP_POST_REVISIONS', false);
define('AUTOSAVE_INTERVAL', false);

此命令在于关闭默认的版本记录以及自动保存草稿功能。

6、在以下两个文件中找到 wp_enqueue_script(‘autosave’); 注释掉。注释方法为在前面加双斜线 //

wp-adminpost-new.php

wp-adminpost.php

7、打开 wp-adminincludespost.php 文件,找到 if ( $create_in_db ), 在它的前一行添加

$create_in_db = false;

注意:此语句在WP3.1版本中会造成BUG,导致后台发布文章提示没有权限修改的问题。如果您的博客是3.1版本,请权衡利弊,是否要使用这个功能。据我实验,添加此语句后,虽然不能在后台直接发布文章,但可以通过Windows Live Writer离线编辑器发布。

8、安装插件 Restore Post Id或手动执行SQL命令:

alter table wp_posts AUTO_INCREMENT= N

此命令在于恢复文章ID。这里的N是你添加新文章的ID。比如现在最后一篇文章的ID是100,则N=101。

好了,再看看你的Posts列表,是不是很整洁,O(∩_∩)O哈哈~

注意:

1、在wordpress后台上传图片,图片会占用ID。建议FTP上传后插入。

2、升级wordpress后需重新更改相关文件。

附注:在网上看到Ludou高人写的一个PHP脚本,你可以在下面下载,下载后用文本编辑器打开,根据开头的说明修改数据库信息,然后将该PHP文件上传至你的博客空间,运行一下看到OK就可以了,然后你可以到phpmyadmin中查看wp_posts表中的id是不是连续的。还是那句话,开始之前请先备份你的数据库。(如果你使用了post id作为固定链接,那么将可能改变所有文章的网址,会影响搜索引擎收录;如果你用的插件建立了新的数据库表,如投票插件等,也将会出现问题;如果你的博客中创建了父子关系的页面,运行了以下脚本将会失去此关系。请慎用!)此时可能你的数据库里还会有为数不多的ID不连续的情况,对于追求完美的你来说,这时就需要根据上面第4条手动操作了。操作的时候一定要认真认真再认真!祝愿你的ID经过自动整理后是完全连续的,那样就不用再费力气了~!

6 条回应

  1. mmxf2011-7-21 · 21:08

    3.2版本的,你试了没有?

    • 猴猴2011-7-21 · 21:57

      没有试,我只是前几天才升级到3.2版本的。 :cankui

  2. lich_wang2011-3-9 · 13:16

    ID本来就不代表啥,没事的话还是别弄的好,数字大就大点呗。

    • 猴猴2011-3-9 · 14:12

      对于固定链接不是post_id来说这个问题的确不算什么。不过要是固定链接显示的是post_id,那看着会很焦心啊 :liuhan :liuhan

  3. 绿篱2011-3-9 · 0:27

    :daxiao 折腾前先备份数据库吧。。。

    • 猴猴2011-3-9 · 9:06

      是啊,这个绝对是必须的。特别是涉及到直接操作数据库的时候尤为重要啊 :kongju