本文记录了 WordPress 禁用自动草稿和历史版本功能的详细操作过程。
前言
在 WordPress 站点后台编写文章时,WordPress 会频繁的向数据库写入草稿数据。
post_status
值为 auto-draft
的数据:自动草稿,默认 60 秒或进出编辑器时写入一条。
post_name
包含 revision
的数据:历史修订,保存草稿或发布文章时写入一条。
WordPress 版本 : 6.4.3
文中使用的是腾讯云 Linux 服务器,系统镜像为 CentOS 7.6 的版本。
文中使用的命令均为 root
用户执行。
操作步骤
此部分开始禁用 WordPress 的自动草稿和历史版本功能。
禁用历史版本
- 进入 WordPress 站点目录
cd /usr/share/nginx/html/wordpress/
- 编辑
./wp-config.php
文件vi ./wp-config.php
- 找到
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. */ ......
- 以下为修改后的结果,部分内容省略
禁用自动保存
- 进入 WordPress 站点目录
cd /usr/share/nginx/html/wordpress/
- 编辑
./wp-admin/post.php
文件vi ./wp-admin/post.php
- 搜索关键字
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' ); // } } ......
- 编辑
./wp-admin/post-new.php
文件vi ./wp-admin/post-new.php
- 搜索关键字
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 ); } ......
复用自动草稿
- 进入 WordPress 站点目录
cd /usr/share/nginx/html/wordpress/
- 编辑
./wp-admin/includes/post.php
文件vi ./wp-admin/includes/post.php
- 搜索关键字
$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 { ...... } ......
- 将以下代码添加到被注释的代码下方,保存后退出
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 自带的编辑器编写文章,那么自动保存功能还是很重要的。
如果是和我一样先写好文章再复制粘贴过去,那么建议把自动草稿和历史版本功能都禁用。