關于WP的自動修訂、自動保存、自動草稿
- 原文參考:詳情
自動保存(Auto-Save),跟Word的自動保存功能類似。可以防止斷電、瀏覽器關閉造成的數據未保存。 WP默認每隔60秒自動保存一次,這個功能只會創建一條記錄,每隔60秒更新一次,當文章發布后,這條記錄的post_status會從draft變成publish,沒有一點浪費的地方。
禁用自動保存后的副作用:預覽功能不可用,必須保存為草稿才能預覽。
文章修訂(Post-Revisioning),編輯文章時,如果文章標題、內容或者摘要等字段發生變化,WordPress就會將當前版本保存為一個修訂版,類似于我們用的快照功能,方便退回。此功能會進行數據庫的讀寫,一般也很少用到,建議直接關閉即可。
自動草稿(Auto-draft),自動草稿在我們在后臺點寫文章就會創建,如果我們文章保存或者發布都會進行狀態轉變,若我們沒有做或者直接關閉了瀏覽器就會形成這么一條草稿。
修訂和自動草稿都會占用一個ID,所以,如果像您的URL是ID格式的話,就會產生不連續的狀態。
- 原文參考:詳情
所謂的文章修訂版就是當每次修改文章的時候,WordPress 程序都會自動保存一次修改之前的文章版本,專業術語叫做版本控制,這樣保證了在誤修改的情況下可以還原之前的內容,不可否認這個功能還是非常的人性化的,但是對于像子凡這樣追求數據干凈不多于的人來說,這個功能似乎也并沒有太大的意義,而且使用 WordPress 的許多小網站或博客都是沒有這種必要的,重點是會在數據庫產生極多無用的數據,從而使得數據庫越來越臃腫。
雖然子凡也曾因為各種突發情況導致數據丟失或者想回退,但是依然選擇禁用,因為平時寫文章都習慣同記事本直接寫,在電腦上,然后邊寫邊保存,而且做到了文章格式的極簡化。
禁用 WordPress 自動保存
當前使用主題根目錄下的?functions.php?文件<?php下添加代碼
//禁用自動保存(方法一)
add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) );
//禁用自動保存(方法二)
add_action('wp_print_scripts', 'fanly_no_autosave');
function fanly_no_autosave() { wp_deregister_script('autosave'); }
提示,以上是兩種禁止 WordPress 自動保存的方法,所以編輯長文章前請注意手動保存,或者使用記事本等軟件先編輯好在復制到 WordPress 編輯框中發布,以防在寫輸入突發情況數據丟失的情況發生。
2.禁用 WordPress 修訂版本
打開主題文件夾中的?functions.php
,將如下代碼添加至文件的<?php
后,保存。(主題文件夾在wp-content/themes
)
//禁用所有文章類型的修訂版本
add_filter( 'wp_revisions_to_keep', 'fanly_wp_revisions_to_keep', 10, 2 );
function fanly_wp_revisions_to_keep( $num, $post ) { return 0;}
//禁用某種文章類型的修訂版本
add_filter( 'wp_revisions_to_keep', 'fanly_wp_revisions_to_keep', 10, 2 );
function fanly_wp_revisions_to_keep( $num, $post ) {
if ( 'post_type' == $post->post_type ) { //引號中 post_type 改為你想禁用修訂版本的文章類型
return 0;
}
return $num;
}
常見 WordPress 常見默認有的文章類型有:
- 文章(Post Type: ‘post’)
- 頁面(Post Type: ‘page’)
- 附件媒體(Post Type: ‘attachment’)
- 修訂版本(Post Type: ‘revision’)
- 導航菜單(Post Type: ‘nav_menu_item’)
當然如果網站使用了自定義文章類型,那么就是自定義的名稱了。
關于 WordPress 自動草稿
不得不吐槽一下這個功能,讓人有些不爽,凡是我們通過 WordPress 后臺點擊“寫文章”,WordPress 就會自動在數據庫里面創建一個自動草稿的記錄,如果你繼續添加內容發布,這個自動草稿會被自動轉換為你的文章,也就是說會自動改變狀態,這就是一篇正常的文章了,沒有任何冗余的數據或者自動草稿的存在,那么另外一種情況就是當我們點擊寫文章后,直接離開或者刷新了,WordPress 的數據表中將會留下一條自動草稿的記錄。所以我們只能通過一些插件去清除,例如子凡之前推薦的《WordPress 數據庫清理優化插件 WP Clean Up》。
而且 WordPress 的自動草稿沒辦法通過 WordPress wp-config.php 配置,或者添加相關的代碼直接禁用,當然這個也是可以理解的,因為當我們點擊寫文章后 WordPress 就自動的給新文章在數據庫中指定了一個文章 ID 記錄,只是文章的默認狀態被設置為自動草稿了而已。所以我們可以確定,WordPress 的文章 ID 并不是在我們點擊發布或者保存才及時生成的,而是在我們點擊寫文章就指定了的。所以也不必過于糾結這個問題了,只有我們養成一個良好的發布文章的習慣,也是可以避免這個問題的。
當然網上還有通過修改 WordPress 源碼來實現禁止 WordPress 自動草稿的方法,這里子凡就不做評論了,只能說大家都挺能折騰的,因為 WordPress 每次升級會替換文件,所以這樣是沒有意義的。
寫在最后:以上方法均可實現相關功能,大家選擇性使用就好,子凡個人不太喜歡使用方法一中利用修改 WordPress 配置文件來實現功能,不是因為不好,可能是自己心理覺得不喜歡改配置文件,僅此而已。當然,以上方法子凡是在 WordPress 4.7 版本實測有效的啦!理論上是支持 3.0 版版以后的,
- 原文參考:詳情
修訂
WordPress自帶記錄文章修訂版本的功能,每次編輯或修改文章,系統都會自動生成并保存一個修訂版。長此以往數據庫將產生大量數據冗余,最終拖慢網站的運行速度。
我們可以定期清理或永久關閉此功能。
定期清理
打開主題文件夾中的?functions.php
,將如下代碼添加至文件的<?php
后,保存。(主題文件夾在wp-content/themes
)
$wpdb->query( "
DELETE FROM $wpdb->posts
WHERE post_type = 'revision'
" );
打開網站任意文章刷新,返回wordpress后臺可以看到歷史修訂版本已被清理干凈,然后刪除上述代碼,需要清理時再添加。
關閉修訂
如果清理了以往的文章歷史版本,并且不想再產生這些內容,可以關閉此功能。
WordPress 提供了關閉方法,在?wp-setting.php
?中有一個變量?WP_POST_REVISIONS
,把它設置為?false
?就可以屏蔽 WordPress 日志修訂功能。
操作過程:打開網站根目錄,找到配置文件wp-config.php
?將下方代碼添加其中,保存。
define('WP_POST_REVISIONS', false);