WordPress 6.1.1日志ID不连续的解决办法(关闭自动保存、自动草稿和禁用文章修订版)

禁用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,把以前的文章修订版都删掉实现精简数据库。

原文地址:
https://www.zsxcool.com/1098.html

Related Posts