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:登錄後複製

About 編輯部

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