あると便利なリビジョンや自動保存なのにこれが邪魔だったり…。どんどん投稿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( 'WP_POST_REVISIONS', false )
- 自動保存
- 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日間)
- define('AUTOSAVE_INTERVAL',3600 )
テーブル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; }
ポストタイプ別にリビジョン数を設定できるようになりました。