WordPress的使用者可以发现,最大的文章ID要远大于文章总量,对于某些强迫症患者,这绝对是无法忍受的。造成ID不连续的主要原因是:①文章自动保存;②文章的修订版本;③附件占用ID;⑤导航菜单和单页面占用ID。所以为了确保ID尽可能的连续,我们需要禁用自动保存和修订版本的功能,尽量保证文章ID的连续。
对于禁用wordpress自动保存和修订版本的方法网上有很多,但是大多都是很久以前的了,经过测试对于最新版本的wordpress-4.4.2已经失效了。现在本站分享两个wordpress最新禁用自动保存草稿和修订版本的方法。
曾劲松博客已升级到最新WordPress 4.4.2版本,根据本站测试,以下的方法可以有效的支持wordpress4.4.2最新版本禁用自动保存和去除文章修订。
为了不浪费你的时间,继续看下文之前请确认你的wordpress版本为4.1.1以上。下面的方法需要修改源文件所以在打开每一个文件之前,记得一定要先做好备份!
禁用文章修订历史版本
打开 wp-config.php 文件,在
$table_prefix = ‘wp_’;
前面添加下面的两行代码:
define('WP_POST_REVISIONS', false);//禁用历史修订版本 define('AUTOSAVE_INTERVAL', false);//自动保存时间设置为一天
禁用自动保存功能
打开 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’ );
将这一句注释掉,直接删除也可以!
禁用自动草稿功能
打开 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 ); } /* 修改结束 */
如下图:
主题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版本)。
除此之外,wordpress上传图片等多媒体文件时,也会占用ID,对于这个问题,我本人是丢弃wordpress自带的编辑器,用了一个编辑器插件:百度Ueditor编辑器插件 For WordPress,这个编辑器上传附近是直接插入文章中的,不经过多媒体,不占用文章ID,而且功能比wordpress自带的编辑器强大多了,有兴趣的可以试一下。