禁用WordPress文章曆史修訂/自動保存/自動草稿功能

WP官方開發的時候,在Wordpress後台編輯、修改文章。都會在一定時間保存一下之前文章修訂版本,以便在不可抗力的情況下,可以快速的找回之前的數據。但這個功能會增加冗餘數據,影響服務器性能,拖慢程序的運行。

可以使用以下方法禁用相關功能

方法一、通過修改 WordPress 程序根目錄下wp-config.php配置文件實現功能禁用

打開根目錄下的 wp-config.php 文件,在 “define(‘WP_DEBUG’, false);” 後邊添加下面的兩行代碼:

  1. /** WordPress 編輯器關閉自動保存和曆史修訂版本選項。 本項注釋掉即可開啓。 */
  2. define(‘WP_POST_REVISIONS’, false);//禁用曆史修訂版本post_revision
  3. define(‘AUTOSAVE_INTERVAL’, 86400);//設置自動保存時間設置爲一天

控制修訂版本和自動保存的設置

  1. // 不保存任何版本(除了自動保存的版本)
  2. define(‘WP_POST_REVISIONS’, false);
  3. //保存所有修訂版本
  4. define(‘WP_POST_REVISIONS’, true);
  5. // 保存 n 個修訂版本
  6. define(‘WP_POST_REVISIONS’, n);
  7. //禁用自動保存間隙時間
  8. define(‘AUTOSAVE_INTERVAL’, false);
  9. //自動保存10小時一次
  10. define(‘AUTOSAVE_INTERVAL’, 36000);
  11. //設置自動保存間隔/
  12. define(‘AUTOSAVE_INTERVAL’, 120);

爲什麽選擇10小時自動保存一次而不是直接false?

  1. 因爲在測試的時候發現直接 false 禁用無效,所以後來索性将自動保存的時間間隔設置成了36000,這樣無論你編輯多長時間都不會産生ID了。
  2. 因爲修改成false以後會造成WordPress報錯的一個bug,開啓debug可以在編輯文章時看到提醒。編輯一篇文章一般都不會超過10小時,所以效果是一樣的,杠杠滴。

方法二、找到 wp-includes/defaut-contants.php 文件,修改如下代碼:

注意:下次升級WordPress程序時,更新後會導緻代碼被覆蓋掉,需要重新添加。

  1. //禁用版本修訂曆史和自動保存
  2. // 修改前
  3. if ( !defined( ‘AUTOSAVE_INTERVAL’ ) )
  4. define( ‘AUTOSAVE_INTERVAL’, 60 ); //這個是自動保存
  5. if ( !defined(‘WP_POST_REVISIONS’) )
  6. define(‘WP_POST_REVISIONS’, true ); //這個是版本修訂曆史
  7. // 修改後
  8. if ( !defined( ‘AUTOSAVE_INTERVAL’ ) )
  9. define( ‘AUTOSAVE_INTERVAL’, false ); //禁用自動保存
  10. if ( !defined(‘WP_POST_REVISIONS’) )
  11. define(‘WP_POST_REVISIONS’, false ); //禁用版本修訂曆史

其中 autosave 的60爲自動保存時間間隔,單位爲s,可以修改爲更大的數值或修改爲false禁用。

以上二種方法并沒有 完全禁用掉自動保存 。因爲在沒有點擊“更新”文章之前就離開編輯的頁面時,會彈出“系統可能不會保存你所做的更改”的提示窗口。所以還需要修改 wp-admin/post-new.php和wp-admin/post.php 這兩個文件。将這兩個文件中的 wp_enqueue_script( 'autosave' ); 注釋掉。其中post.php還要把前面一行的if語句注釋掉。

打開 wp-admin/post.php 文件,搜索并注釋

  1. //if ( ‘attachment’ !== $post_type )
  2. // wp_enqueue_script(‘autosave’);

打開 wp-admin/post-new.php 文件,搜索并注釋
//wp_enqueue_script( 'autosave' );

方法三、當前使用主題文件夾下的 functions.php 文件php結束标記 ?> 前加上如下代碼

  1. //禁用文章自動保存(方法一)
  2. add_action( ‘admin_print_scripts’, create_function( ‘$a’, “wp_deregister_script(‘autosave’);” ) );
  3. //禁用文章自動保存(方法二)。注:方法一與方法二任選其一
  4. add_action(‘wp_print_scripts’,‘fanly_no_autosave’);
  5. function fanly_no_autosave(){
  6. wp_deregister_script(‘autosave’);
  7. }
  8. //禁用文章修訂版本
  9. add_filter( ‘wp_revisions_to_keep’, ‘fanly_wp_revisions_to_keep’, 10, 2 );
  10. function fanly_wp_revisions_to_keep( $num, $post ) { return 0;}

另外你如果有自己定義的文章類型,可以使用下面這段代碼來禁止特定文章類型的修訂版本。

  1. //隻禁用某種文章類型的修訂版本
  2. add_filter( ‘wp_revisions_to_keep’, ‘fanly_wp_revisions_to_keep’, 10, 2 );
  3. function fanly_wp_revisions_to_keep( $num, $post ) {
  4. if ( ‘post_type’ == $post->post_type ) { //post_type爲你要禁止修訂版本的文章類型
  5. return 0;
  6. }
  7. return $num;
  8. }

下面是Wordpress中幾種類型

文章(Post Type: ‘post’ )

頁面(Post Type: ‘page’ )

附件媒體(Post Type: ‘attachment’ )

修訂版本(Post Type: ‘revision’ )

導航菜單( Post Type: ‘nav_menu_item’ )

溫馨提示:不少WordPress用戶會使用在wp-config.php添加相關代碼來禁用自動保存和修訂版本,但就個人的使用情況來看效果并不理想,具體原因尚不明确。

方法四、使用“ Super Switch ” 插件禁止修訂版本和自動保存

1、在 “安裝插件”頁面的搜索框中,輸入 Super Switch ——》 回車 ——》 找到 Super Switch ——》 點擊“現在安裝” ——》 啓用“ Super Switch ” 插件。

WordPress文章禁用自動草稿(auto-draft)功能

打開 wp-admin/includes/post.php ,找到如下代碼:

  1. /*
  2. $post_id = wp_insert_post( array( ‘post_title’ => __( ‘Auto Draft’ ), ‘post_type’ => $post_type, ‘post_status’ => ‘auto-draft’ ) );
  3. $post = get_post( $post_id );
  4. */

這段代碼很簡單,先是清除七天以前的自動草稿,然後插入一條新草稿,如果你繼續寫文章并發布,那麽這條草稿就被使用了,包括在後台首頁有一個快速發布,也用到了這個。而很詭異的是,如果你後台點了“寫文章(添加文章)”,沒有輸入任何内容或到别的頁面或是關閉了,此時仍然會生成一個自動草稿,而這個草稿,是後台不可見的,是垃圾數據,隐形的禍害,也是造成文章ID不連續的隐形殺手。

将其注釋,并添加以下代碼:

  1. /* 修改開始*/
  2. global $wpdb;
  3. global $current_user; // 獲取當前登錄管理用戶
  4. $post = $wpdb->get_row( “SELECT * FROM $wpdb->posts WHERE post_status = ‘auto-draft’ AND post_type = ‘$post_type’ AND post_author = $current_user->ID ORDER BY post_date ASC, ID ASC LIMIT 1” ); // 獲取最早一條自動草稿
  5. if ( !$post ) {
  6. //沒有記錄添加一條草稿記錄
  7. $post_id = wp_insert_post( array( ‘post_title’ => __( ‘Auto Draft’ ), ‘post_type’ => $post_type, ‘post_status’ => ‘auto-draft’ ) );
  8. $post = get_post( $post_id );
  9. }
  10. /* 修改結束 */

當數據庫中有一條或多條狀态爲”auto-draft”的自動草稿時,取ID最小的,新文章即使用此條記錄。如果沒有此種類型的數據,才會新插入一條數據。并且查詢數據時是根據當前的用戶來判斷,不會出現多用戶時出錯。這樣就可以避免了自動草稿(auto-draft)的冗餘垃圾數據。保證了日志ID的連續性。但最後我要提醒一句,如果你在日志中添加了附件,如圖片,那麽該圖片也會占用一條數據,即一個連續的ID,所以,如果你以ID形式,發現日志有時候不是連續的ID了,那麽,有可能是你日志的附件占用了臨近的ID。
PS:這裏,之所以使用post_date排序,是因爲自動草稿超過七天後會自動删除。所以,先使用比較舊的記錄。

常見問題
資源支持商用嗎?
不支持商用,僅供學習,請下載後24H内删除!
資源采用什麽網盤下載?
小于100M使用藍奏雲,大于100M使用阿裏雲和123雲盤!
資源爲什麽不能使用?
資源有時效性及各種方面的兼容性,不保證一直都能用!
有問題如何聯系?
1、評論留言 2、用戶中心提交工單 3、聯系小編QQ:429413218(09:00 -21:00)
免責聲明
0
分享海報

評論0

請先
M3U8視頻批量下載PC工具,支持ts格式合并爲MP4(v2.0.7)
M3U8視頻批量下載PC工具,支持ts格式合并爲MP4(v2.0.7)
5分鍾前 有人購買 去瞅瞅看
顯示驗證碼
沒有賬号?注冊  忘記密碼?