WordPress教學

完美解決WordPress文章ID不連續問題- 親測有效

對於WordPress網站文章ID不連續的問題困擾了我很久,今天將WordPress文章ID不連續的原因和具體解決辦法做詳細的說明。

WordPress文章ID不连续的原因

用WordPress做网站的站长可能会发现,最大的文章ID要遠大於文章總量,比如品自行博客現在文章才350篇的文章,但ID已經超過5000了,對於有些強迫症的我確實有些無法忍受,其實WordPress文章ID不連續主要有以下原因:

1、文章的自動保存、修订版本

在WordPress后台写文章的时候,每隔一段時間系統會自動保存一下文章,以防止數據丟失,保存一次生成一個id;
我們對文章進行修改的時候,修改一次生成一個修訂版,對應一個修訂版文章id,即使刪除修訂版本,原佔用的ID也無法回收了;

2、附件、選單、页面占用ID

WordPress的附件、導航菜單項和頁面都是比較特殊的post,而且都會佔用一個post的id,在wp_posts表的數據表結構裡面可以看出post類型種類(詳細介紹WordPress數據庫表wp_posts),這個無法改變。

WordPress文章ID不连续的解决办法

了解了WordPress文章id不连续的原因以后,我們自然就明白由於附件、導航菜單和頁面佔用ID,理論上是沒有絕對的方法可以讓文章ID連續的,但是不相差過大還是可能的,這個也只能從文章自動保存和文章修訂版本進行設置了。

一、禁用文章修订版

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


define('WP_POST_REVISIONS', false);

也可以在当前主题的functions.php添加以下PHP代码

// 禁用修订版本,2015年3月5日更新
add_filter( 'wp_revisions_to_keep', 'specs_wp_revisions_to_keep', 10, 2 );
function specs_wp_revisions_to_keep( $num, $post ) {
   if ( 'post_type' == $post->post_type )
      $num = 0;

   return $num;
}

二、删除文章修订版

禁用了文章修订版之后数据库中还是保存着之前已经创建的文章修订版这些其实已经没多大用处而且占着ID我们可以将它删除至于怎么删除可以在 phpmyadmin 中执行以下SQL语句(会影响置顶文章慎用!并做好备份)

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不连续的原因之一如果你不需要这个功能可以在当前主题的functions.php中添加以下代码


// 禁用自动保存,所以编辑长文章前请注意手动保存。 
add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );

五、重新排列不连续的文章ID

方法一:可在当前主题的functions.php中加入以下PHP代码这样如果你只是单纯发文章不发页面不添加菜单不上传媒体的话基本上此后的文章ID是连续的而且不改变之前已经发布的文章ID不影响SEO登录后复制

關於 編輯部

kuajinggu的編輯人員是一支由 WordPress 專家組成的團隊,由 Dylan 領導,在 WordPress、虛擬主機、電子商務、搜尋引擎優化和行銷方面擁有超過 10年的經驗。kuajinggu創建於 2014 年,目前是業界最大的免費 WordPress 資源網站,常被稱為 WordPress 的維基百科。