WordPress完美解决文章ID不连续问题

Ludou
文章目录

     有很多WordPress博客的固定链接中使用了文章ID,但是WordPress由于种种原因导致了文章ID不连续的问题,也经常有博友在论坛中提问要解决这个问题,但是很少能够得到他们满意的答复。今天我就来告诉你如何完美的解决这个问题,说是完美,可能有点过了,WordPress 3.0 之后的版本都会有个自动草稿,每发表一篇文章就会占两个ID号,目前还没有禁用的方法。还请继续往下看如何一定程度上解决文章ID不连续的问题。当然如果你的固定链接中没有使用post ID,那么对你来说文章ID是透明的,无关紧要。即使固定链接中用了post ID,如果你不是特别在意,连不连续也是无关紧要的,本文对你来说也没多大意义了。

一、禁用文章修订版

     所谓的文章修订版就是你每次修改一次文章,它都会自动帮你保存修改之前的文章版本,专业术语叫做版本控制,这样保证了在误修改的情况下可以还原之前的内容,这个在维基文档的维护方面是有很大帮助的,但是作为我们的小博客,似乎没多大用处,而且这个修订版在数据库中是占据一个ID的,这也是导致文章ID不连续的问题之一。要想禁用文章修订版,可以在 wp-config.php文件中添加:

1
define('WP_POST_REVISIONS', false);

二、删除文章修订版

     禁用了文章修订版之后,数据库中还是保存着之前已经创建的文章修订版,这些其实已经没多大用处,而且占着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

露兜博客博主,男生,业余Web程序员,儒家思想受益者。文采不佳,不喜欢聚光灯,不喜欢吹牛,不喜欢无序的做事方式。闲时喜欢写些代码自娱自乐,并在博客中分享一些个人技术经验。

标签:

75 条评论

我来说两句
1 2 120
  1. 无涯博客

    我疑问?
    ID连续与否没啥关系吧?
    自动保存还是不要取消的好。

  2. 牛奶我不喝

    来追了,会不会是最底的楼底…

  3. gorgons.

    。。。原来附件也占ID。。搞不懂wordpress…这么说想完美解决是不可能的了

  4. 优得客

    就是文章中图片显示没有 ,很是麻烦,以前我试过的,后来还是不用了,不连续就不连续吧,什么都是有得必有失去。

  5. EIIE

    不懂这些…
    不能附加前缀吗?

  6. 途途

    以前很在乎文章的链接结构是post id,现在无所谓了,通常有多少读者会记住你的文章地址呢??
    文章内容才是最重要的,谢谢露兜分享~

  7. M

    這個問題由我一開始建立WordPress時就遇到,而且困擾了我很久,使我一直都沒有心情寫blog…(因為要管理post ID實在太麻煩了!)

    近來心血來潮在網上看看,就發現樓主你的文章…
    這就是我一直所追求的完美解決方案啊!
    尤其是那個post_id_sql.php真的很方便!

    不過此問題始終源自WordPress的設計,希望官方日後會有改進吧!

    萬分感謝!

    來自香港的M

    • Ludou

      能帮上你的忙,我也倍感欣慰。不过这个应该不算设计缺陷,因为WordPress是提供给全世界人用的,需要考虑大众化的需要,所以在这个ID的设计上可能满足不了部分人的要求,我估计在未来很长的一段时间官方都不会更改这个设计。

  8. 主打星

    这个倒是有点用,对于想不断精简空间用量的我来说,但是对于我这技术盲来说,不太敢轻易去动代码改后台,弄崩溃过几次

  9. kita

    哈哈,很方便,现在ID看起来舒服多了

  10. 秦天

    不好意思,您的文章写得很好,所以收藏下,已经注明转载!真的很抱歉,以后还希望多多指教!

  11. 有点蓝

    终于狠下心照你这个弄了一遍,看上去果然舒服多了……

  12. YOU87

    文章太好了,借我转下。

  13. 老人家

    試了一下這個腳本,對解決文章ID不連續問題非常棒,但是使用後頁面之間的關係會亂掉,譬如說把 a 頁面設置為 b 頁面的上層頁面,腳本使用後這樣的關係會被打破。
    不過一般人也沒幾個頁面,手動調整一下就可以了。

  14. low

    你好,我按你的方法一个不漏的操作了一遍,怎么文章ID还是不连续啊??

  15. low

    另外是不是与版本有关啊,我的是WordPress 3.1.1的,能回答一下么?

  16. dato

    偶然发现你头像的猫很像荷兰的某只外号刘臭蛋的,哈哈哈

  17. 3qsami

    原来,这么简单的想法实现起来要牵扯到这么多,这种比较极端的事还是得过且过吧。我之所以有这么个想法,无非是想日后能随机键入一个数字看看以前写的文章罢了,按顺序来既能有序,又不会出现不存在页面的提示。

    作为独立博客的初学者,我想问博主另外一个问题。您的正文排版非常不错,浏览起来就像是一种享受,这是用什么插件实现的,还是博主平时就直接用HTML代码写博?

  18. TANG

    或者是好的。很不错。

  19. 南宁SEO

    这个问题困饶了我很久终于在这里打到解决方法了,谢谢博主

  20. 天网马潇湘

    嗯,不错,就是有两个小问题:一是自动保存草稿还在,用WP-Cleaner可搞定;二是分类目录也占用ID,唉。。没办法了

  21. 龙龙

    博主太坏了,自从点击你的下载链接后心里就一直非常不开心,又想折腾一下你的这个下载页面效果,嘿嘿,能否给我发下代码!!嘎嘎

1 2

发表评论

订阅评论