使用Wordpress這麼久一直很討厭wordpress的文章修訂和自動保存功能,也使用過超級開關插件可以禁止wordpress文章修訂和自動保存功能,但是自己博客的插件已經夠多的了,只好通過修改wordpress主程序來實現禁止文章修訂和自動保存功能。但是這種方法有個不好的地方就是,每次wordpress升級,就得再改動一次wordpress源碼,實在是很麻煩的。今天無意中撞到了ZWW博客上發現這個非插件免修改源碼實現wordpress禁止文章修訂和自動保存的方法,分享給大家吧!
使用方法很簡單,只要在主題目錄中的functions.php添加相應代碼就行了,代碼如下:
復制代碼 代碼如下:
/* 移除自動保存和修訂版本 */
remove_action('pre_post_update', 'wp_save_post_revision' );
add_action( 'wp_print_scripts', 'disable_autosave' );
function disable_autosave(){
wp_deregister_script('autosave');
}
測試環境:WordPress 3.1.2,原理上 3.0 以上都支持。
如果你不是特別在意,連不連續也是無關緊要的,本文對你來說也沒多大意義了。
一、禁用文章修訂版
所謂的文章修訂版就是你每次修改一次文章,它都會自動幫你保存修改之前的文章版本,專業術語叫做版本控制,這樣保證了在誤修改的情況下可以還原之前的內容,這個在維基文檔的維護方面是有很大幫助的,但是作為我們的小博客,似乎沒多大用處,而且這個修訂版在數據庫中是占據一個ID的,這也是導致文章ID不連續的問題之一。要想禁用文章修訂版,可以在 wp-config.php文件中添加:
1
define('WP_POST_REVISIONS', false);
二、刪除文章修訂版
禁用了文章修訂版之後,數據庫中還是保存著之前已經創建的文章修訂版,這些其實已經沒多大用處,而且占著ID,我們可以將它刪除。至於怎麼刪除,可以在 phpmyadmin 中執行以下SQL語句(做好備份):
12345
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';
三、刪除不必要的附件
相信很多博友在發布文章都會同時上傳/插入一些附件,如圖像、視頻、音樂等,這些附件可以在WordPress管理後台 – 媒體庫中看到,不同媒體對應了不同的文章。可是你要注意的是這些媒體也是占據著文章ID的,它們與文章都保存在同一個數據庫表wp_posts中。如果你特別追求文章的ID一定要完美無缺地連續,請不要在發布文章的時候上傳/插入這些媒體,並請在WordPress管理後台 – 媒體庫中,刪除之前上傳的媒體(注意這個操作不只是刪除記錄,而且會刪除你上傳的文件),需要的話請用FTP重新上傳這些文件。
四、禁用自動保存
自動保存的好處是你在編輯文章的時候,每隔一小段時間系統會自動幫你保存編輯的文章,防止網頁突然關閉,導致之前寫的幾千字嘩啦一下全沒了。缺點是每篇都文章都會有一個自動保存的記錄,同樣占據一個文章ID,也是文章ID不連續的原因之一,如果你不需要這個功能,請在以下兩個文件中:
12
wp-admin/post-new.phpwp-admin/post.php
注釋掉這行:
1
//wp_enqueue_script('autosave');
五、重新排列不連續的文章ID
以下方法已不支持最新版WordPress。完成以上四步,基本上可以保證以後發布的文章ID都會是連續的了,但是之前已經發布的文章ID還是一片混亂,得把他們重新排列,以保證是ID是連續的。我寫了一個PHP腳本,你可以通過以下網址下載,下載後用文本編輯器打開,根據開頭的說明修改數據庫信息,然後將該PHP文件上傳至你的博客空間,運行一下看到OK就可以了,你可以到phpmyadmin中查看wp_posts表中的id是不是連續的了。還是那句話,開始之前請先備份你的數據庫。(如果你使用了post id作為固定鏈接,那麼將可能改變所有文章的網址,會影響搜索引擎收錄;如果你用的插件建立了新的數據庫表,如投票插件等,也將會出現問題;如果你的博客中創建了父子關系的頁面,運行了以下腳本將會失去此關系。請慎用!)...余下全文>>
只需在wp-config.php中加入以下代碼即可:
復制代碼代碼如下:
define('AUTOSAVE_INTERVAL', 120 ); // 設置自動保存間隔,單位是秒,默認60
define('WP_POST_REVISIONS', false ); // 禁用文章修訂功能
define('WP_POST_REVISIONS', 3); //