禁用WordPress自动保存和修订版本的方法网上有很多,但是大多都是很久以前的了,经过测试对于最新版本的WordPress 6.1.1已经失效了。
下面的方法是可以使WordPress 6.1.1实现日志ID连续的解决办法(关闭自动保存、自动草稿和禁用文章修订版),这里Pop提示需要修改源文件所以在打开每一个文件之前,记得一定要先做好备份!
1、禁用文章修订历史版本
打开 wp-config.php 文件,在
$table_prefix = 'wp_';
前面添加下面的两行代码:
define('WP_POST_REVISIONS', false);//禁用历史修订版本
define('AUTOSAVE_INTERVAL', false);//自动保存时间设置为一天
2、禁用自动保存功能
打开 wp-admin/post.php 文件,搜索
if ( 'attachment' !== $post_type )
找到
if ( 'attachment' !== $post_type )
wp_enqueue_script(‘autosave’);
将这两行用注释符号//注释即可
继续打开wp-admin/post-new.php文件,搜索:
wp_enqueue_script( ‘autosave’ );
将这一句注释掉,直接删除也可以!
3、禁用自动草稿功能
打开 wp-admin\includes\post.php 文件,搜索:
if ( $create_in_db ) {
找到:
$post_id = wp_insert_post( array( ‘post_title’ => __( ‘Auto Draft’ ), ‘post_type’ => $post_type, ‘post_status’ => ‘auto-draft’ ) );
$post = get_post( $post_id );
替换为:
/* 修改-注释两行代码禁用草稿*/
/*
$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
$post = get_post( $post_id );
*/
/* 修改开始*/
global $current_user,$wpdb;
$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 ID ASC LIMIT 1" );
if (!($post) ) {
$post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
$post = get_post( $post_id );
}
/* 修改结束 */
4、主题Functions.php修改方法
在functions.php的最后php结束标记前加上如下代码:
//移除自动保存
wp_deregister_script('autosave');
//移除修订版本
remove_action('post_updated','wp_save_post_revision' );
这里移除修订版本的方法不同于网上早期的方法的地方是,’wp_save_post_revision’ 挂载的钩子已经由‘pre_post_updated’变成了‘post_updated’,这个变化貌似是WordPress版本4.0之后,造成了早期的修改方法失效了,具体见WordPress原文件wp-includes/default-filters.php第265行(WordPress4.2.2版本)。
对于已经发布或现有存在的冗余数据,可以使用插件 Wp Cleaner,把以前的文章修订版都删掉实现精简数据库。