WordPress禁用自动草稿功能

其他 piniu 34浏览 0评论

我发现wordpress后台写文章页面,每刷新一次就会在数据表里创建一条自动草稿的数据,如果恶意刷新该页面,那么数据表里会产生越来越多垃圾数据,从网上找了许多解决办法,试了后也不起什么作用,最后终于解决了

解决办法:

进入项目后,找到/wp-admin/includes/post.php文件,然后搜索“$create_in_db”,确定代码位置,内容如下:

然后添加如下代码:

附修改的代码文本如下:

      if ( $create_in_db ) {
      
        // ===== 屏蔽每次都创建自动草稿功能 =============
    //		$post_id = wp_insert_post(
    //			array(
    //				'post_title'  => __( 'Auto Draft' ),
    //				'post_type'   => $post_type,
    //				'post_status' => 'auto-draft',
    //			),
    //			true,
    //			false
    //		);
    //
    //		if ( is_wp_error( $post_id ) ) {
    //			wp_die( $post_id->get_error_message() );
    //		}
    //
    //		$post = get_post( $post_id );
    
        // ==== 添加该段代码start (获取该用户的最后一条自动草稿,有就使用,如没有才创建) =====
        $posts = query_posts(array(
            'post_status' => 'auto-draft',
            'post_type' => $post_type,
            'author' => get_current_user_id(),
            'posts_per_page' => 1
        ));
        
        if ($posts) {
            $post = get_post($posts[0]->ID);
        } else {
            $post_id = wp_insert_post(array(
                'post_title' => __('Auto Draft') ,
                'post_type' => $post_type,
                'post_status' => 'auto-draft',
            ));
            $post = get_post($post_id);
        }
        // ========= 添加该段代码 end ===========

上面的代码是允许保存自动草稿,如果数据库中已有该用户的自动草稿,下次写文章时,会自动加载该用户最新的一条自动草稿用作新文章ID,避免产生大量垃圾数据。

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • *昵称:
  • *邮箱: