WordPress中文章ID不連續(xù)問題怎么解決?下面本篇文章給大家分享下WordPress完美解決文章ID不連續(xù)問題的方法,希望對大家有所幫助!
有很多WordPress博客的固定鏈接中使用了文章ID,但是WordPress由于種種原因?qū)е铝宋恼翴D不連續(xù)的問題,也經(jīng)常有博友在論壇中提問要解決這個問題,但是很少能夠得到他們滿意的答復(fù)。
今天我就來告訴你如何完美的解決這個問題,說是完美,可能有點過了,WordPress 3.0 之后的版本都會有個自動草稿,每發(fā)表一篇文章就會占兩個ID號,目前還沒有禁用的方法。還請繼續(xù)往下看如何一定程度上解決文章ID不連續(xù)的問題。
(資料圖片僅供參考)
當(dāng)然如果你的固定鏈接中沒有使用post ID,那么對你來說文章ID是透明的,無關(guān)緊要。即使固定鏈接中用了post ID,如果你不是特別在意,連不連續(xù)也是無關(guān)緊要的,本文對你來說也沒多大意義了。
所謂的文章修訂版就是你每次修改一次文章,它都會自動幫你保存修改之前的文章版本,專業(yè)術(shù)語叫做版本控制,這樣保證了在誤修改的情況下可以還原之前的內(nèi)容,這個在維基文檔的維護(hù)方面是有很大幫助的,但是作為我們的小博客,似乎沒多大用處,而且這個修訂版在數(shù)據(jù)庫中是占據(jù)一個ID的,這也是導(dǎo)致文章ID不連續(xù)的問題之一。要想禁用文章修訂版,可以在 wp-config.php文件中添加:
define("WP_POST_REVISIONS", false);也可以在當(dāng)前主題的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;}禁用了文章修訂版之后,數(shù)據(jù)庫中還是保存著之前已經(jīng)創(chuàng)建的文章修訂版,這些其實已經(jīng)沒多大用處,而且占著ID,我們可以將它刪除。至于怎么刪除,可以在 phpmyadmin 中執(zhí)行以下SQL語句(會影響置頂文章,慎用!并做好備份):
DELETE a,b,cFROM wp_posts aLEFT 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";
相信很多博友在發(fā)布文章都會同時上傳/插入一些附件,如圖像、視頻、音樂等,這些附件可以在WordPress管理后臺 - 媒體庫中看到,不同媒體對應(yīng)了不同的文章??墒悄阋⒁獾氖沁@些媒體也是占據(jù)著文章ID的,它們與文章都保存在同一個數(shù)據(jù)庫表wp_posts中。如果你特別追求文章的ID一定要完美無缺地連續(xù),請不要在發(fā)布文章的時候上傳/插入這些媒體,并請在WordPress管理后臺 - 媒體庫中,刪除之前上傳的媒體(注意這個操作不只是刪除記錄,而且會刪除你上傳的文件),需要的話請用FTP重新上傳這些文件。
自動保存的好處是你在編輯文章的時候,每隔一小段時間系統(tǒng)會自動幫你保存編輯的文章,防止網(wǎng)頁突然關(guān)閉,導(dǎo)致之前寫的幾千字嘩啦一下全沒了。缺點是每篇都文章都會有一個自動保存的記錄,同樣占據(jù)一個文章ID,也是文章ID不連續(xù)的原因之一,如果你不需要這個功能,可以在當(dāng)前主題的functions.php中添加以下代碼:
// 禁用自動保存,所以編輯長文章前請注意手動保存。add_action( "admin_print_scripts", create_function( "$a", "wp_deregister_script("autosave");" ) );方法一:可在當(dāng)前主題的functions.php中加入以下PHP代碼,這樣如果你只是單純發(fā)文章,不發(fā)頁面,不添加菜單,不上傳媒體的話,基本上此后的文章ID是連續(xù)的,而且不改變之前已經(jīng)發(fā)布的文章ID,不影響SEO:
// WordPress 3.8測試有效function keep_id_continuous(){ global $wpdb; // 刪掉自動草稿和修訂版 $wpdb->query("DELETE FROM `$wpdb->posts` WHERE `post_status` = "auto-draft" OR `post_type` = "revision""); // 自增值小于現(xiàn)有最大ID,MySQL會自動設(shè)置正確的自增值 $wpdb->query("ALTER TABLE `$wpdb->posts` AUTO_INCREMENT = 1"); }add_filter( "load-post-new.php", "keep_id_continuous" );add_filter( "load-media-new.php", "keep_id_continuous" );add_filter( "load-nav-menus.php", "keep_id_continuous" );如果你使用了置頂文章、菜單和父子頁面等功能,下面的方法失效:
方法二:完成以上幾步,基本上可以保證以后發(fā)布的文章ID都會是連續(xù)的了,但是之前已經(jīng)發(fā)布的文章ID還是一片混亂,得把他們重新排列,以保證是ID是連續(xù)的。我寫了一個PHP腳本,你可以通過以下網(wǎng)址下載,下載后用文本編輯器打開,根據(jù)開頭的說明修改數(shù)據(jù)庫信息,然后將該PHP文件上傳至你的博客空間,運行一下看到OK就可以了,你可以到phpmyadmin中查看wp_posts表中的id是不是連續(xù)的了。還是那句話,開始之前請先備份你的數(shù)據(jù)庫。(如果你使用了post id作為固定鏈接,那么將可能改變所有文章的網(wǎng)址,會影響搜索引擎收錄;如果你用的插件建立了新的數(shù)據(jù)庫表,如投票插件等,也將會出現(xiàn)問題;如果你的博客中創(chuàng)建了父子關(guān)系的頁面,運行了以下腳本將會失去此關(guān)系。請慎用?。?/p>
推薦學(xué)習(xí):《WordPress教程》
以上就是淺析WordPress中文章ID不連續(xù)問題怎么解決(完美方法)的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
關(guān)鍵詞: