WordPress有一个很鸡肋的“自动草稿”功能,其主要目的是防止在编辑时突然关闭浏览器导致数据丢失,以及防止多用户同时保存文档时造成ID冲突,可惜一般站长都用不上,反而是白白浪费了一条数据库记录,虽然后台看不到。
方案一 修改Wordpress程序文件
该方法彻底禁用自动保存功能,没有副作用,尤其是不会浪费任何一条PostID,难受的是,每次更新版本后需要重新修改代码。
0x01 修改文件wp-config.php,加入以下代码:
//设置自动保存草稿的时间为一天 define('WP_POST_REVISIONS', false); define('AUTOSAVE_INTERVAL', 86400); /* 好了!请不要再继续编辑。请保存本文件。使用愉快! */
0x02 修改wp-admin/post.php和wp-admin/post-new.php,找到如下内容并将其注释:
//注释后 //wp_enqueue_script( 'autosave' );
注意:注释掉post-new.php中的以上代码后,发布新文章时不会自动生成“永久链接”。
0x03 打开文件wp-admin/includes/post.php,找到如下代码段:
$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 $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', ), false, false ); $post = get_post( $post_id ); }
以上代码的功能是查询当前用户生成的最小ID的自动草稿(auto-draft),新文章将使用该条记录,否则创建一条新记录。
方案二 修改主题Function文件
修改当前主题目录下的function.php,以下两种方法,二选一即可。
//方法一 add_action('wp_print_scripts','disable_autosave'); function disable_autosave(){ wp_deregister_script('autosave'); } //方法二 add_action('wp_print_scripts','fanly_no_autosave'); function fanly_no_autosave(){ wp_deregister_script('autosave'); }
通过该方法禁用自动保存,简单有效,但是有副作用:预览功能不可用,必须保存为草稿后才能预览。
原创文章禁止转载:技术学堂 » WordPress禁用自动草稿功能