トイレのうず

自動下書き(auto-draft)をできるだけ無効化する 〜WordPress 3.3.1にアップグレード

当記事はアフィリエイト広告を掲載しています。

WordPress 3.3.1 へアップグレード

このサイト WordPress にて運用してるのですが、実はずっと 2.9.2 のままだったのです。 WordPress 3 は最初マルチサイトに対応したということで不安定だったし、おせっかい機能もたくさんついているらしいので、バージョンアップを躊躇していたのです。ローカルに MAMP をインストールして、 WordPress 3.3.1 をインストールしていろいろ触ってみて、デメリットとメリットがわかったので、重い腰を上げて WordPress 3.3.1 にアップグレードをしました。

手順は簡単。

  1. データベースのバックアップ
  2. サーバー上のファイルのバックアップ
  3. アップグレードしろっていうボタンを押す

作業はこれだけなのだけれど、 WordPress 3.3.1 は PHP 5.2.4 以上が必須らしく、 1 度目はアップグレードが失敗に終わりました。レンタルサーバーの管理画面にて PHP のバージョンを 5.3.3 に切り替えて、再度アップグレードを行ったところ、問題なく終了しました。簡単。昔はアップグレードするっていったら気を使ってものすごく大変だったのに、便利になったものです。

プラグインもいくつかうまく動作していなかったものがあったので、自動アップグレードをして一応アップグレード作業は終了です。

「自動下書き( auto-draft )」を(なるべく)無効にする

WordPress 3 には「自動下書き( auto-draft )」というおせっかい機能がついているのです。自動保存と投稿リビジョン管理とは違う機能です。「自動下書き( auto-draft )」は新規投稿画面を開くだけで(管理画面を開くだけでもダメかも)、データベースの POST ID を確保するので、データベースがすごい勢いで巨大化するのです。 auto-draft は不可視になっていて、管理画面の投稿一覧には表示されないのですが、ローカルで動かした時に MySQL のテーブルをみて卒倒しそうになったくらいです。

この「自動下書き( auto-draft )」は記事として公開されなかった場合、 1 週間ほどでデータベースから削除されるようなのですが、それって必然的にデーターベースが虫食い状態になるってことですよね。気持ち悪い。ということで、どうにか「自動下書き( auto-draft )」機能を無効にできないかと探ってみたのですが、プラグインや function.php にコードを書くなどでは無効にできないみたいです。コアファイルをいじればいいみたいだけれど、それだとアップグレードのしたらまた同じ作業の繰り返しになるから避けたいのです。「自動下書き( auto-draft )」を管理画面の投稿一覧に可視化することはできるみたいなので、せめて POST ID の消費を抑えようとそのコードを function.php に付け加えました。
→ Simple Colors : WordPress の auto-draft を強制的に下書き状態にする

//auto-draft を投稿一覧に可視化する
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 );

アップグレードしてこの記事を書こうとしただけで、すでに 3 つも「自動下書き( auto-draft )」が作成されています。うっとうしいったらありゃしない。

自動下書き( auto-draft )で無駄レコードが生成される

可視化させていじってると、ダッシュボードのクイック投稿でも「自動下書き( auto-draft )」が機能しているもよう。ダッシュボードの表示オプションからクイック投稿のチェックを外してみた。しかしクイック投稿が表示されないだけで機能はしているようで、ダッシュボードと投稿一覧をいったりきたりするたびに「自動下書き( auto-draft )」が増加している。(投稿一覧に「自動下書き( auto-draft )」が見えるからわかりやすい。)ならばダッシュボードからクイック投稿の機能自体を削除したらどうだろう。(表示オプションからさえ削除する。)
→ 130 単位: WordPress ダッシュボードのクイック投稿を無効化

//ダッシュボードのクイック投稿を無効化 
function disable_quick_press() {
	remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
}
add_action('wp_dashboard_setup', 'disable_quick_press');

ビンゴ! すばらしい! ダッシュボードと投稿一覧をいったりきたりしても、「自動下書き( auto-draft )」が増えなくなった。(新規投稿画面を開いたら増えるけれど。)参考にしたサイトには wp-config.php に記述するように書いてあったけれど、 function.php でも無効化できた。でもテーマを変更したときのことを考えたら、 wp-config.php に書くのが正解ですね。自動保存と投稿リビジョンを停止するコードは wp-config.php に追加しないと動かないし。

ちなみに WordPress のコアファイルをいじって「自動下書き( auto-draft )」を停止する方法(英語)。
→ Plaxee : How To Disable Auto Draft In WordPress

パーマリンクとかをいじってサイトの URL をすっきりさせたかったけれど、いろいろ調査してたら夜が明けたから明日にしよう。(サイトメンテナンスは明け方やった方がアクセスが少ないので失敗しても被害が少なくてすむ。)

関連記事

WordPress を 2.7 にアップグレード
WordPress
thumbnail
WordPress 2.7.1 にアップデート
WordPress
thumbnail
WordPress を(今さら) 2.9.2 へアップデートした
WordPressお知らせ
thumbnail
【 WordPress 】 MySQL をバックアップするプラグイン【 WP-DBManager 】
WordPress
thumbnail
WordPress 投稿リビジョンを削除するプラグイン【 Delete Revision 】
WordPress
Delete Revision ボタン
【 WordPress 】 Disable Revisions and Autosave plugins を有効にしているのに Autosave されてる件
WordPress
thumbnail