WordPress完美解决文章ID不连续问题
有很多WordPress博客的固定链接中使用了文章ID,但是WordPress由于种种原因导致了文章ID不连续的问题,也经常有博友在论坛中提问要解决这个问题,但是很少能够得到他们满意的答复。今天我就来告诉你如何完美的解决这个问题,说是完美,可能有点过了,WordPress 3.0 之后的版本都会有个自动草稿,每发表一篇文章就会占两个ID号,目前还没有禁用的方法。还请继续往下看如何一定程度上解决文章ID不连续的问题。当然如果你的固定链接中没有使用post ID,那么对你来说文章ID是透明的,无关紧要。即使固定链接中用了post ID,如果你不是特别在意,连不连续也是无关紧要的,本文对你来说也没多大意义了。
一、禁用文章修订版
所谓的文章修订版就是你每次修改一次文章,它都会自动帮你保存修改之前的文章版本,专业术语叫做版本控制,这样保证了在误修改的情况下可以还原之前的内容,这个在维基文档的维护方面是有很大帮助的,但是作为我们的小博客,似乎没多大用处,而且这个修订版在数据库中是占据一个ID的,这也是导致文章ID不连续的问题之一。要想禁用文章修订版,可以在 wp-config.php文件中添加:
1 |
二、删除文章修订版
禁用了文章修订版之后,数据库中还是保存着之前已经创建的文章修订版,这些其实已经没多大用处,而且占着ID,我们可以将它删除。至于怎么删除,可以在 phpmyadmin 中执行以下SQL语句(做好备份):
1 2 3 4 5 | 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'; |
三、删除不必要的附件
相信很多博友在发布文章都会同时上传/插入一些附件,如图像、视频、音乐等,这些附件可以在WordPress管理后台 – 媒体库中看到,不同媒体对应了不同的文章。可是你要注意的是这些媒体也是占据着文章ID的,它们与文章都保存在同一个数据库表wp_posts中。如果你特别追求文章的ID一定要完美无缺地连续,请不要在发布文章的时候上传/插入这些媒体,并请在WordPress管理后台 – 媒体库中,删除之前上传的媒体(注意这个操作不只是删除记录,而且会删除你上传的文件),需要的话请用FTP重新上传这些文件。
四、禁用自动保存
自动保存的好处是你在编辑文章的时候,每隔一小段时间系统会自动帮你保存编辑的文章,防止网页突然关闭,导致之前写的几千字哗啦一下全没了。缺点是每篇都文章都会有一个自动保存的记录,同样占据一个文章ID,也是文章ID不连续的原因之一,如果你不需要这个功能,请在以下两个文件中:
1 2 | wp-admin/post-new.php wp-admin/post.php |
注释掉这行:
1 | //wp_enqueue_script('autosave'); |
五、重新排列不连续的文章ID
完成以上四步,基本上可以保证以后发布的文章ID都会是连续的了,但是之前已经发布的文章ID还是一片混乱,得把他们重新排列,以保证是ID是连续的。我写了一个PHP脚本,你可以通过以下网址下载,下载后用文本编辑器打开,根据开头的说明修改数据库信息,然后将该PHP文件上传至你的博客空间,运行一下看到OK就可以了,你可以到phpmyadmin中查看wp_posts表中的id是不是连续的了。还是那句话,开始之前请先备份你的数据库。(如果你使用了post id作为固定链接,那么将可能改变所有文章的网址,会影响搜索引擎收录;如果你用的插件建立了新的数据库表,如投票插件等,也将会出现问题;如果你的博客中创建了父子关系的页面,运行了以下脚本将会失去此关系。请慎用!)
本文版权归露兜博客所有,转载引用请完整注明以下信息:
本文作者:Ludou
本文标题:WordPress完美解决文章ID不连续问题
本文地址:http://www.ludou.org/wordpress-post-id-continuous.html

我疑问?
ID连续与否没啥关系吧?
自动保存还是不要取消的好。
某些人有洁癖,呵呵。
来追了,会不会是最底的楼底…
。。。原来附件也占ID。。搞不懂wordpress…这么说想完美解决是不可能的了
就是文章中图片显示没有 ,很是麻烦,以前我试过的,后来还是不用了,不连续就不连续吧,什么都是有得必有失去。
不懂这些…
不能附加前缀吗?
如果你用过WordPress,并且知道固定链接的话,你应该知道是什么样的一种情况。
以前很在乎文章的链接结构是post id,现在无所谓了,通常有多少读者会记住你的文章地址呢??
文章内容才是最重要的,谢谢露兜分享~
对于访客没多大关系。但对于我们这些具有ID控的博主来说就感觉有点不爽了
這個問題由我一開始建立WordPress時就遇到,而且困擾了我很久,使我一直都沒有心情寫blog…(因為要管理post ID實在太麻煩了!)
近來心血來潮在網上看看,就發現樓主你的文章…
這就是我一直所追求的完美解決方案啊!
尤其是那個post_id_sql.php真的很方便!
不過此問題始終源自WordPress的設計,希望官方日後會有改進吧!
萬分感謝!
來自香港的M
能帮上你的忙,我也倍感欣慰。不过这个应该不算设计缺陷,因为WordPress是提供给全世界人用的,需要考虑大众化的需要,所以在这个ID的设计上可能满足不了部分人的要求,我估计在未来很长的一段时间官方都不会更改这个设计。
这个倒是有点用,对于想不断精简空间用量的我来说,但是对于我这技术盲来说,不太敢轻易去动代码改后台,弄崩溃过几次
哈哈,很方便,现在ID看起来舒服多了
不好意思,您的文章写得很好,所以收藏下,已经注明转载!真的很抱歉,以后还希望多多指教!
终于狠下心照你这个弄了一遍,看上去果然舒服多了……
文章太好了,借我转下。
試了一下這個腳本,對解決文章ID不連續問題非常棒,但是使用後頁面之間的關係會亂掉,譬如說把 a 頁面設置為 b 頁面的上層頁面,腳本使用後這樣的關係會被打破。
不過一般人也沒幾個頁面,手動調整一下就可以了。
非常感谢你的建议,目前还暂时无法解决这个问题。
你好,我按你的方法一个不漏的操作了一遍,怎么文章ID还是不连续啊??
另外是不是与版本有关啊,我的是WordPress 3.1.1的,能回答一下么?
请看文章第一段和最后一段。
偶然发现你头像的猫很像荷兰的某只外号刘臭蛋的,哈哈哈
原来,这么简单的想法实现起来要牵扯到这么多,这种比较极端的事还是得过且过吧。我之所以有这么个想法,无非是想日后能随机键入一个数字看看以前写的文章罢了,按顺序来既能有序,又不会出现不存在页面的提示。
作为独立博客的初学者,我想问博主另外一个问题。您的正文排版非常不错,浏览起来就像是一种享受,这是用什么插件实现的,还是博主平时就直接用HTML代码写博?
用html代码写的文章
或者是好的。很不错。
这个问题困饶了我很久终于在这里打到解决方法了,谢谢博主
嗯,不错,就是有两个小问题:一是自动保存草稿还在,用WP-Cleaner可搞定;二是分类目录也占用ID,唉。。没办法了
博主太坏了,自从点击你的下载链接后心里就一直非常不开心,又想折腾一下你的这个下载页面效果,嘿嘿,能否给我发下代码!!嘎嘎
见:http://www.ludou.org/file-download-tool.html