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禁用自动草稿功能

技术学堂
















