如何:避免一堆无用的自动草稿ID条目相关的帖子表,并禁用‘post-new.php’的自动保存功能?

时间:2012-03-04 作者:José Pablo Orozco Marín

我明白了!Buuuuut我必须编辑2个核心文件,是的!2个核心文件:(

我知道这不是一个很酷的插件黑客,但可能是一个很酷的补丁,WP,Im使用3.3.1版本。

这是我的小技巧/贡献:

wp-admin/post-new.php

1评论:

//wp_enqueue_script(\'autosave\');

2更改:

$post = get_default_post_to_edit( $post_type, true );
$post_ID = $post->ID;
签署人:

$post       = array();
$post_ID    = 0;

wp-admin/post.php

1更改:

if ( isset( $_GET[\'post\'] ) )
    $post_id = $post_ID = (int) $_GET[\'post\'];
elseif ( isset( $_POST[\'post_ID\'] ) )
    $post_id = $post_ID = (int) $_POST[\'post_ID\'];
else
    $post_id = $post_ID = 0;
签署人:

if ( isset( $_GET[\'post\'] ) ) {

    $post_id = $post_ID = (int) $_GET[\'post\'];

} elseif ( isset( $_POST[\'post_ID\'] ) ) {

    if ( empty($_POST[\'post_ID\']) ) {

        $post_type = wp_kses($_POST[\'post_type\']);

        if( !post_type_exists($post_type) ) {

            $post_type = \'post\';

        }

        check_admin_referer(\'update-\' . $post_type . \'_\' . (int) $_POST[\'post_ID\']);

        global $user_ID;

        $defaults = array(
                            \'post_status\'   => \'draft\',
                            \'post_type\'     => $post_type,
                            \'post_author\'   => (int) $user_ID,
                    );

        $postarr    = wp_parse_args( $_POST, $defaults );

        $post_ID    = wp_insert_post($postarr);

        $post_id    =  (int) $post_ID;

        redirect_post($post_id);

        exit;   

    } else {

        $post_id = $post_ID = (int) $_POST[\'post_ID\'];

    }



} else {

    $post_id = $post_ID = 0;

}
我正在使用JQuery隐藏:添加媒体内容。在posts表中只创建一个唯一的ID条目(而不是一堆无用的自动草稿条目),用户手动保存当前帖子后,媒体内容将可见。

Rare behavior: When a user logins for the first time and is redirected to Dashboard, WP creates an Auto Draft entry in posts table, hmmm, crazy! Somebody knows why it works like that?

一个更好的解决方案:也许根本不改变核心文件?这将是一个伟大的时刻!例如,在设置中有一个复选框,可以选中或取消选中是否需要“自动保存”功能(get\\u选项)。其他人想应用补丁吗?

提前谢谢。

1 个回复
SO网友:fuxia

阅读线程Disable/ Stop "auto-draft" posts 了解为什么这是一个非常糟糕的主意。

让我引用一下@Otto:

自动草稿的存在是因为多个用户可以同时创建新帖子。如果两个人在大致相同的时间输入post new,那么他们的第一次自动保存几乎同时发生,那么存在一种竞争条件,可能会导致其中一人返回错误的帖子ID,这将导致他们继续编辑帖子时,帖子被覆盖/丢失。

“自动草稿”将创建文章并在显示编辑屏幕之前获取新文章的ID,从而防止两位同时创作的作者在其浏览器中的数据中意外地具有相同的文章ID。

Source

自动草稿在未使用7天后自动删除。它们基本上是自动清洗的。不用担心他们。

当写一篇新文章时第一次自动保存时,它们也会消失。

Source

您应该禁用Quick draft 在管理页面上,因为这会在加载时创建一个新的自动草稿。

除此之外,您还解决了一个不存在的问题,使进一步的更新变得不可能。别再浪费你的宝贵时间了something useful 取而代之。:)

结束

相关推荐