WordPress 知らないうちにデータベースに溜まっていくもの

あると便利なリビジョンや自動保存なのにこれが邪魔だったり…。どんどん投稿IDが増えるのが気に入らないので、調べたときのメモです。ま、意図しないところで増えていくのが原因なので、仕組みがわかればwelcomeな気持ちになるハズ!?

テーブルwp_posts

投稿記事各種や固定ページ、メニューが保存される、データベース・テーブルです。
最新はこちら Codex

投稿ステータス(post_status)
WordPress3.0より投稿ステータスを自分で定義できるようになりました。
  • 'publish' : 公開済み
  • 'pending' : ペンディング
  • 'auto-draft' : 自動保存
  • 'draft' : 下書き
  • 'private' : 非公開
  • 'static' : (2.0.x 以前はページ)
  • 'object' :
  • 'attachment' :
  • 'inherit' : 継承(添付ファイル、リビジョン・自動保存のとき)
  • 'future' : 予約投稿
  • 'trash' : ゴミ箱
投稿タイプ(post_type)
  • 'post' : 投稿
  • 'page' : ページ
  • 'attachment' : 添付ファイル
  • 'revision' : リビジョン・自動保存

テーブルwp_postsにたまっていく不要?な投稿を制御しよう!

以下、wp-config.php に書いたり、プラグインに入れたりしているコードの例です。

リビジョン数
  • define( 'WP_POST_REVISIONS', false )
    リビジョンなし
  • define( 'WP_POST_REVISIONS', 3 )
    3つに設定します。(⇒保存しておきたい数字にしましょう。)
自動保存
  • define('AUTOSAVE_INTERVAL',3600 )
    自動保存を3600秒(60sx60mx10h)=10時間に設定。(デフォルトは60seconds)
    ・この時間内はプレビューできません。
  • wp_deregister_script('autosave')
    自動保存しません。
    ※これをすると、
    ・プレビューは機能しなくなります。
    ・デバッグモードでは、'autosave'なんてないよと言われます。

    add_action('wp_print_scripts', 'saki_stop_autosave');
    function saki_stop_autosave(){
      wp_deregister_script('autosave');
    }
    
  • wp_delete_auto_drafts (see. wp-includes/post.php)
    7日間経過した自動保存レコードを削除します。
    ※post_status='auto-draft'で、post_dateと今日の差が7日間より大きい場合に削除するという条件です。
  • ちなみに、ゴミ箱の保留期間は、
    define('EMPTY_TRASH_DAYS', 30);
    で変更できます。(↑は30日間)

テーブルwp_postsで確認してみよう!

※PhpMyAdminなどを使いましょう。
※テーブル名はインストール時に設定した接頭辞(下記は「wp_」)に変えてくださいね。

溜まったrevisionは?
select * from wp_posts where post_type="revision"
↓消したいときのSQL
delete from wp_posts where post_type="revision"
自動保存された投稿は?
select * from wp_posts where post_status="auto-draft"
(post_typeには各投稿タイプが入っていますので、条件に使えますね。)

フィルターwp_revisions_to_keep(※WordPress3.6 より)

例)カスタム投稿"my_custom_post"のリビジョン数を3に指定する。

add_filter( 'wp_revisions_to_keep', 'saki_revisions', 10, 2 );
function saki_revisions( $num, $post ) {
  if( 'my_custom_post' == $post->post_type ) {
    $num = 3;
  }
  return $num;
}

ポストタイプ別にリビジョン数を設定できるようになりました。

コメントを残す

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