3.X系になってから『auto-draft』で自動保存などリビジョンが付くようになった。
便利な機能なんだろうけど、DB直接イジる側からするとポンポン見えないデータが作られるのは不快なのである。
3.Xになりたてはwp-config.phpにdefine登録するだけで止まってたんだけど、バージョンが上がるとそうは行かなくなった。
な ん で そ う な っ た!?
その自動的に作られる見えないデータと戦うための設定。
現状までの対応で、プラグインを作っておきました!
基本的に以下は全て『wp-config.php』に記載する。
その方がバージョンアップ時めんどくさくないし…
require_once(ABSPATH . 'wp-settings.php');『前』に追加
『wp-config.php』専用の設定。プラグイン化は出来ない。
リビジョン停止
define('WP_POST_REVISIONS', false);
『0』または『false』で、この大量に作られるリビジョンを止められる!
ハズなんだけど、記事のエディタ画面で編集直後に閉じちゃって、次の日ブラウザ開いたら出来てた。
なんでやねん!!
オートセーブの時間を延ばす
define('AUTOSAVE_INTERVAL', 604800);
自動下書きまでの時間を延ばす。上記は仮として『604800』(7日間)。
時間を延ばすだけだものだから、結局作られる…前はそんなんじゃなかった…
『wp_deregister_script('autosave');』してるのに結局作るから、設定しておく。
require_once(ABSPATH . 'wp-settings.php');『後』に追加
プラグイン化してもいい内容。
オートセーブスクリプト停止
有名ですね!
AUTOSAVE_INTERVALを設定しているからなのか効いてくれない。
でも残しておくの…
function forbid_hiding_post_print_scripts(){ wp_deregister_script('autosave'); // オートセーブスクリプト停止 } add_action('wp_print_scripts','forbid_hiding_post_print_scripts');
管理画面のクイックドラフトを非表示にする
もう切っても切って出てくる『auto-draft』。
奴の原因は何と管理画面のダッシュボードの『クイックドラフト』だった!
あるだけで作るなんという害悪!管理画面から消そうぜ!
// 自動下書を作るクイックドラフトを非表示(停止) function forbid_hiding_post_dashboard_setup() { if (function_exists( 'remove_meta_box' )){ // remove処理が動くときのみ remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' ); } } add_action('wp_dashboard_setup', 'forbid_hiding_post_dashboard_setup' );
出来てしまうデータを非公開の見える投稿に変える
「いっそ出来るのはもうこの際仕方ないとして、作られるデータを見えるようにしておこう!」
と思っていたら同じことを考えている人がいた。
WordPressのauto-draftを強制的に下書き状態にする | Simple Colors
これを参照に条件を増やし、非公開記事が出来るようにしておいた。
自分はゴミ箱にすら入れたくないので、ゴミ箱も継承もすべて非公開にしてやった次第。
本体と区別をつけるためにタイトルに元のステータスを追加しておいた。
// それでも出来る自動下書等を非公開記事に変更 function forbid_hiding_post_insert_post( $post_id, $post ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE && ! (int)$post_id ) { return; } // 裏で動くステータス全て停止 $stop_status = array( 'auto-draft', // 自動下書 'inherit', // 継承 'trash', // ゴミ箱 ); if(in_array($post->post_status,$stop_status)){ $update = array( 'ID' => (int)$post_id, 'post_title' => "[".$post->post_status."]".$post->post_title, // タイトルに元状態追加 'post_status' => 'private', // 下書:draft 非公開:private 'post_parent' => 0, // 親指定消す 'post_type' => 'post', // revisionを通常投稿へ ); wp_update_post($update); } } add_action( 'wp_insert_post', 'forbid_hiding_post_insert_post', 10, 2 );
※これを使うと『inherit』を作って表示させる『変更をプレビュー』が使えなくなります!
元『inherit』データを作るだけ作ってプレビュー表示しない状態です!
既に出来てしまった記事をどうにかする方法については『wordpressのrevision記事を通常記事にDBから変更』を参照くださいな。
コメント