
WordPress的自动保存功能在我看来是一道伤,鸡肋的很纠结。虽然他的初衷是为了保存用户的文章,以防万一出现意外的情况而丢失。可惜在逻辑上对于自动保存处理的很不好,特别是对于ID有洁癖的人来说更是如此,虽然我不是以ID来命名博客标题的,但是,我依旧要ID的连续。
网上关于此类的修改不胜枚举,但是很多都是只针对一个版本的,WordPress一更新就失效了,3.0.x系列的修改方法就不适合于3.1.x版本的,很是纠结。
WordPress 4.4+关闭自动保存草稿功能打开 wp-config.php 文件,在 $table_prefix = ‘wp_’; 前面添加下面的两行代码:
define('WP_POST_REVISIONS', false);//禁用历史修订版本define('AUTOSAVE_INTERVAL', false);//自动保存时间设置为一天打开 wp-admin/post.php 文件,搜索并注释
//if ( 'attachment' !== $post_type )// wp_enqueue_script('autosave');打开 wp-admin/post-new.php 文件,搜索并注释
//wp_enqueue_script( 'autosave' );打开 wp-admin\includes\post.php 文件,搜索并修改
/* 修改-注释两行代码禁用自动草稿*/$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 AND AND$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 );/* 修改结束 */WordPress 3.1.x关闭自动保存草稿功能有时候不得不手动修改WP的数据库来调整ID,很是烦恼,最近WP有升级到了3.1.1了,从3.1开始用Super Switch这个插件,稍稍有点效果,但是有时候还是发现会出现auto-draft,正好在看到一篇文章,ShunYea的《关闭WordPress 3.1版的自动草稿(auto-draft)》。经过我在3.1.1下的测试,发现很好,不管我怎么修改之前的文章,新发表的文章ID还是连续的,现在把方法分享给大家,希望对那些有需要的朋友有些帮助。
首先安装Super Switch这个插件,将“保存修订版本”和“自动保存”设为禁止。
然后找到”/wp-admin/includes/post.php”文件,搜索“$create_in_db”,不含引号。可以发现,大概从399行开始代码就是产生这个自动草稿的:
if ( $create_in_db ) { // Cleanup old auto-drafts more than 7 days old $old_posts = $wpdb- get_col( SELECT ID FROM $wpdb- posts WHERE AND DATE_SUB( NOW(), INTERVAL 7 DAY ) post_date ); foreach ( (array) $old_posts as $delete ) wp_delete_post( $delete, true ); // Force delete $post_id = wp_insert_post( array( 'post_title' = __( 'Auto Draft' ), 'post_type' = $post_type, 'post_status' = 'auto-draft' ) ); $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' ) ); } else { $post-0; $post-; $post-; $post-; $post-; $post-$post_type; $post-; $post-; $post-; $post-get_option( 'default_comment_status' ); $post-get_option( 'default_ping_status' ); $post-get_option( 'default_pingback_flag' ); $post-get_option( 'default_category' ); $post-; $post-0; $post-0;将上面的代码替换为:
if ( $create_in_db ) { global $current_user; $post = $wpdb- get_row( SELECT * FROM $wpdb- posts WHERE AND AND$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 ); /* End */ // Below is added in 3.1 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' ) );注意,如果是WordPress 3.0版(包含3.0.x版)要么删除“// Below is added in 3.1”及后面的 2 行代码,要么就是用3.0.x版的修改方法。