WordPressのauto-draftを強制的に下書き状態にする

WordPress 自動下書き

まとりさんが、auto-draftが増えてしまう件について停止できないものかツイートされていたので、なんとか出来ないものか、調べてみました。

WordPressには、3.0以降、投稿の新規追加などを行う際、新規追加画面を開いただけで、auto-draftという自動下書きがデータベースに追加されるようになっていて、自動保存も含めて、一旦でも保存されないうちに画面が閉じられたりすると、この自動保存が管理画面から見えない形で残ってしまうことになります。
※ 自動下書きは7日経過後のものは、次回の新規記事作成時に削除処理がなされるようになっていますので、永遠に残り続けるということはありません。

自動下書き自体を停止することは、現バージョン(3.1.1)では不可能で、次案として、自動下書きが行われた際、強制的に下書きに更新してしまうような処理を行うようにしてみました。実行ロジックは下記の通りで、実際のコードはCODE 1になります。これをテーマのfunctiohns.phpなどに追加してください。

  • wp_insert_postにフック
  • 自動保存時は除外
  • ステータスがauto-draftの時のみ、ステータスをdraft(下書き)に更新

CODE 1

function force_update_autodraft_to_draft( $post_id, $post ) {
	if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE && ! (int)$post_id ) { return; }
	if ( $post->post_status == 'auto-draft' ) {
		wp_update_post( array( 'ID' => (int)$post_id, 'post_status' => 'draft' ) );
	}
}
add_action( 'wp_insert_post', 'force_update_autodraft_to_draft', 10, 2 );

一旦、新規追加画面を開いて、そのまま投稿画面に遷移してみるとこのとおり、自動下書きという投稿が増えている事がわかります。

自動下書き対策後

でも、自動下書きがもりもり増えるより、見えないまま消えていってくれた方が気にならない人も多いかも。。

「WordPressのauto-draftを強制的に下書き状態にする」への2件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です