WordPress禁用自动草稿功能

WordPress有一个很鸡肋的“自动草稿”功能,其主要目的是防止在编辑时突然关闭浏览器导致数据丢失,以及防止多用户同时保存文档时造成ID冲突,可惜一般站长都用不上,反而是白白浪费了一条数据库记录,虽然后台看不到。

方案一 修改Wordpress程序文件

该方法彻底禁用自动保存功能,没有副作用,尤其是不会浪费任何一条PostID,难受的是,每次更新版本后需要重新修改代码。

0x01 修改文件wp-config.php,加入以下代码:

//设置自动保存草稿的时间为一天
define('WP_POST_REVISIONS', false);
define('AUTOSAVE_INTERVAL', 86400);

/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */

0x02 修改wp-admin/post.phpwp-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禁用自动草稿功能

精彩评论

3+3=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏