WP Ver2.7 と自動保存の停止の不具合?

2009/01/16 金曜日 11:08 投稿者 zon

追記

※この問題は自作プラグインで対処。詳細は下記の記事を参照。
WP2.7以降のリビジョン管理と自動保存を停止するプラグイン

ここから本文

タイトルで『不具合?』と書いてしまったけど不具合は言い過ぎかもしれない。そういう仕様と言えばそれはそれで間違ってない。

前回記事のWP Ver2.7 と自動保存の停止で書いているように、自動保存を無効にするプラグインを入れているにもかかわらず自動保存してしまう現象が発生する。

これは、『予約済み(下書きではない)』 + 『プレビュー』の条件のもとで発生すると予想。

予想の根拠

Ver2.6.5 以前にはなかった、
/wp-admin/includes/post.php の post_preview() という関数

これに下記のような記述がある。

if ( 'draft' == $post->post_status ) {
    $id = edit_post();
} else { // Non drafts are not overwritten.  The autosave is stored in a special post revision.
    $id = wp_create_post_autosave( $post->ID );
    if ( ! is_wp_error($id) )
        $id = $post->ID;
}

プレビューする記事が下書きでない場合 wp_create_post_autosave( $post->ID ) するよ。という処理をしています。

この wp_create_post_autosave() は、Post レコードを自動で保存してしまう処理だと思う。

コメントでも
Non drafts are not overwritten. The autosave is stored in a special post revision.
と書かれている。

予約投稿ではなく公開済みの場合は、プレビューボタンに preview=true のパラメータが付かないので post_preview() の関数を呼ぶことはない。

対処方法

予約投稿した後はプレビューボタンを押さないように気をつける。
もしくは、コアの部分を弄る。しかないのか?

トラックバック一覧

この記事にはトラックバックがついていません。

コメント一覧

この記事にはコメントがついていません。

RSS feed for comments on this post.

コメント投稿

Sorry, the comment form is closed at this time.