WordPress 禁用自动草稿和历史版本功能

本文记录了 WordPress 禁用自动草稿和历史版本功能的详细操作过程。

前言

在 WordPress 站点后台编写文章时,WordPress 会频繁的向数据库写入草稿数据。

post_status 值为 auto-draft 的数据:自动草稿,默认 60 秒或进出编辑器时写入一条。

post_name 包含 revision 的数据:历史修订,保存草稿或发布文章时写入一条。

WordPress 版本 : 6.4.3

文中使用的是腾讯云 Linux 服务器,系统镜像为 CentOS 7.6 的版本。

文中使用的命令均为 root 用户执行。

操作步骤

此部分开始禁用 WordPress 的自动草稿和历史版本功能。

禁用历史版本

  1. 进入 WordPress 站点目录
    cd /usr/share/nginx/html/wordpress/
    
  2. 编辑 ./wp-config.php 文件
    vi ./wp-config.php
    
  3. 找到 define( 'WP_DEBUG', false ); 行,并在其下方添加以下代码,保存后退出
    // 禁用历史版本修订功能
    define('WP_POST_REVISIONS', false);
    // 设置自动保存时间为 24 小时
    define('AUTOSAVE_INTERVAL', 86400);
    
    • 以下为修改后的结果,部分内容省略
      ......
      /**
       * For developers: WordPress debugging mode.
       *
       * Change this to true to enable the display of notices during development.
       * It is strongly recommended that plugin and theme developers use WP_DEBUG
       * in their development environments.
       *
       * For information on other constants that can be used for debugging,
       * visit the documentation.
       *
       * @link https://wordpress.org/documentation/article/debugging-in-wordpress/
       */
      define( 'WP_DEBUG', false );
      
      /* Add any custom values between this line and the "stop editing" line. */
      
      // 禁用历史版本修订功能
      define('WP_POST_REVISIONS', false);
      // 设置自动保存时间为 24 小时
      define('AUTOSAVE_INTERVAL', 86400);
      
      /* That's all, stop editing! Happy publishing. */
      ......
      

禁用自动保存

  1. 进入 WordPress 站点目录
    cd /usr/share/nginx/html/wordpress/
    
  2. 编辑 ./wp-admin/post.php 文件
    vi ./wp-admin/post.php
    
  3. 搜索关键字 autosave 并注释对应的代码(以下为注释后的结果,部分内容省略)
    ......
    if ( ! wp_check_post_lock( $post->ID ) ) {
      $active_post_lock = wp_set_post_lock( $post->ID );
    
      // if ( 'attachment' !== $post_type ) {
      //  wp_enqueue_script( 'autosave' );
      // }
    }
    ......
    
  4. 编辑 ./wp-admin/post-new.php 文件
    vi ./wp-admin/post-new.php
    
  5. 搜索关键字 autosave 并注释对应的代码(以下为注释后的结果,部分内容省略)
    ......
    /** This filter is documented in wp-admin/post.php */
    if ( apply_filters( 'replace_editor', false, $post ) !== true ) {
      if ( use_block_editor_for_post( $post ) ) {
        require ABSPATH . 'wp-admin/edit-form-blocks.php';
      } else {
        // wp_enqueue_script( 'autosave' );
        require ABSPATH . 'wp-admin/edit-form-advanced.php';
      }
    } else {
      // Flag that we're not loading the block editor.
      $current_screen = get_current_screen();
      $current_screen->is_block_editor( false );
    }
    ......
    

复用自动草稿

  1. 进入 WordPress 站点目录
    cd /usr/share/nginx/html/wordpress/
    
  2. 编辑 ./wp-admin/includes/post.php 文件
    vi ./wp-admin/includes/post.php
    
  3. 搜索关键字 $create_in_db 并注释 if 语句的前两句代码(以下为注释后的结果,部分内容省略)
    ......
    if ( $create_in_db ) {
      // $post_id = wp_insert_post(
      //  array(
      //    'post_title'  => __( 'Auto Draft' ),
      //    'post_type'   => $post_type,
      //    'post_status' => 'auto-draft',
      //  ),
      //  false,
      //  false
      // );
      // $post    = get_post( $post_id );
      if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) ) {
        set_post_format( $post, get_option( 'default_post_format' ) );
      }
      wp_after_insert_post( $post, false, null );
    
      // Schedule auto-draft cleanup.
      if ( ! wp_next_scheduled( 'wp_scheduled_auto_draft_delete' ) ) {
        wp_schedule_event( time(), 'daily', 'wp_scheduled_auto_draft_delete' );
      }
    } else {
      ......
    }
    ......
    
  4. 将以下代码添加到被注释的代码下方,保存后退出
    global $wpdb;
    global $current_user;
    $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" );
    if(!$post) {
      $post_id = wp_insert_post(
        array(
          'post_title'  => __( 'Auto Draft' ),
          'post_type'   => $post_type,
          'post_status' => 'auto-draft',
        ),
        false,
        false
      );
      $post = get_post( $post_id );
    }
    
    • 以下为修改后的结果,部分内容省略
      ......
      if ( $create_in_db ) {
        // $post_id = wp_insert_post(
        //  array(
        //    'post_title'  => __( 'Auto Draft' ),
        //    'post_type'   => $post_type,
        //    'post_status' => 'auto-draft',
        //  ),
        //  false,
        //  false
        // );
        // $post    = get_post( $post_id );
      
        global $wpdb;
        global $current_user;
        $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" );
        if(!$post) {
          $post_id = wp_insert_post(
            array(
              'post_title'  => __( 'Auto Draft' ),
              'post_type'   => $post_type,
              'post_status' => 'auto-draft',
            ),
            false,
            false
          );
          $post = get_post( $post_id );
        }
      
        if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) ) {
          set_post_format( $post, get_option( 'default_post_format' ) );
        }
        wp_after_insert_post( $post, false, null );
      
        // Schedule auto-draft cleanup.
        if ( ! wp_next_scheduled( 'wp_scheduled_auto_draft_delete' ) ) {
          wp_schedule_event( time(), 'daily', 'wp_scheduled_auto_draft_delete' );
        }
      } else {
        ......
      }
      ......
      

总结

如果需要长时间使用 WordPress 自带的编辑器编写文章,那么自动保存功能还是很重要的。

如果是和我一样先写好文章再复制粘贴过去,那么建议把自动草稿和历史版本功能都禁用。

参考链接

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇