Wordpressでリビジョンを無効にしたり、リビジョンの保存回数に上限を設けたり、リビジョンの保存間隔を変更する方法をまとめました。
リビジョンと似た機能である自動下書きをオフにする方法もご紹介!
記事IDの数字が増え続けているのはこの自動リビジョンが原因だったようです。
自動リビジョンと自動下書きは別々の扱いのようでかなりややこしいです…
wp-config.phpとfunctions.phpにてプラグインレスで対処します。
この記事の目次
自動リビジョン・自動下書きを無効化する
Wordpressには記事の執筆中に記事内容のバックアップを自動で取ってくれる機能にリビジョンと下書きの2つの機能が付いています。
どちらの自動保存機能も使うことがなく特に気にしていなかったのですが、どうやらリビジョンが保存されると記事IDが加算されるようです。
1記事ごとの記事IDの差が100以上あります。
当サイトは今のところパーマリンクにIDを使っているので、増えすぎるのは良くないと思い自動リビジョンと自動下書き機能を停止することにしました。
リビジョンと自動保存の両方を停止しても、ある程度記事を書き進んだら更新を押せばその都度上書き保存できます。
手動で1つのバックアップを上書きしつつ執筆する感じです。全く困りません・w・
リビジョンと自動保存の違い
リビジョンと自動保存の違いは長くなりますので、別のページにまとめました。
自動リビジョンの無効化と制御
自動リビジョンを無効化したり、保存数の上限を設定する方法です。
画像の赤枠部分のリビジョンを設定します。
なお、このリビジョンの数には自動保存(下書き)も含まれています。
では早速調整していきましょう!
コード追記の注意点
作業の前に「リビジョン」と後述する「下書き」は編集するファイルが異なるため、若干ややこしいです。
間違わないように先にポイントを押さえておきましょう。
ポイントは以下です。
ポイント
- コードはwp-config.phpに追記する。
- コードを書き込む場所にも注意が必要。
リビジョンを無効化・制御するために編集するファイルはwp-config.phpです。
良く触るfunctions.phpではないので注意して下さい。
ポイント
wp-config.phpはwp-contentフォルダがある階層にあります。
また、コードを記述する場所は「require_once( ABSPATH . 'wp-settings.php' );」よりも前でないとダメです。
最終行ではダメなので注意が必要です。
そんなに触っていないファイルだと思うので、具体的には
define( 'WP_DEBUG', false);
の後で、
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ (英語では/* That's all, stop editing! happy publishing. */~)
よりも前を目安にすれば良いです。
リビジョンを停止する
前置きが長くなりました。
wp-config.phpの適切な位置に以下のコードを追記します。
define('WP_POST_REVISIONS', false);
公開設定の画面にリビジョンの表示そのものが表示されなくなります。
新規作成が無効になりますが、既に作成されたリビジョンは削除されません。
既存リビジョンの削除はプラグインを使いましょう。
現状リビジョンを削除する画面(UI)はWordpressにはありません。
リビジョン保存数の上限設定
たまにリビジョンは使うから残しておきたい!
という方はリビジョン保存数に上限を設定するのが良いです。
wp-config.phpの適切な位置に以下のコードを追記します。
define('WP_POST_REVISIONS', 5);
コード内の"5"という引数がリビジョンの保存数の上限です。
これでいくら更新を押しても5個以上リビジョンが作成されなくなります。
じっくり長文を書く方でもリビジョンは数個保存されていれば十分なはずです。
自動保存(自動下書き)を停止する
上記の方法でリビジョンは停止されます。
しかし、まだオートセーブの機能が生きています。
リビジョンを停止しても「バックアップから復元」の機能は使えます。
そして記事を編集していると「下書きを保存しました。」という文字も出ます。
これは自動保存の機能らしい...
この表示も自動保存の機能。
これらはリビジョンではなくブラウザに保存される自動保存の機能のようです。
ポイント
- リビジョンと違い、データベースはほぼ圧迫されません
- 下書きの保存ではIDは増えません(たぶん...)
詳しくはページ上部の関連記事をご覧ください・w・
僕はこれも使わないので、この自動保存機能も停止します。
functions.phpで読み込みを停止する
以下のコードでオートセーブスクリプトの読み込みを停止します。
wp-config.phpではなくfunctions.phpです。
//自動保存無効 function disable_autosave() { wp_deregister_script('autosave'); } add_action('wp_print_scripts','disable_autosave');
オートセーブに関するスクリプトは以下にあります。
/wp-includes/js/autosave.js.min
このファイルの読み込みを外せば自動保存されなくなります。
上記コードですが、Gutenberでは効かないかもしれません。
自動保存時間の変更-wp-config.php
自動保存の時間を変更する方法も時に有効です。
Wordpressのデフォルト設定では自動保存の時間は60秒に設定されています。
ですが、60秒で執筆できる内容などしれています。
60秒ぐらいの作業なら全然取り返せます。
ということでこの保存間隔を変更するのも良いです。
リビジョンの時と同じようにwp-config.phpに以下のコードを追記すればOKです。
define('AUTOSAVE_INTERVAL', 1800);
引数の1800は秒ですので、このコードでは30分の間隔になります。
引数の参考
- 3分ならば180に設定
- 5分ならば300に設定
というように【設定したい分×60】でOKです。
書き込む場所はリビジョンの時と同じく
require_once( ABSPATH . 'wp-settings.php' );
よりも前にして下さい。
これで自動保存される間隔を任意の時間に設定できます。
両方とも無効化した場合の補足
リビジョンと自動保存を両方とも停止してから、気になる点があったので補足。
しつこく生成されるリビジョン
記事IDですが新規投稿の際に若干前の記事よりも増えています。
記事id=10の次がid=16といった具合で以前よりはましですが・・・
恐らくプレビューなどを使った時に専用のIDが作成されているのだと思います…
リビジョンを停止しても完全に新規IDの作成が止まるわけではないようです。
両方無効化する方法のまとめ
当サイトの最終設定は以下です。
functions.php
function disable_autosave() {
wp_deregister_script('autosave');
}
add_action('wp_print_scripts','disable_autosave');
wp-config.php
define('WP_POST_REVISIONS', false);
define('AUTOSAVE_INTERVAL', 604800);
何が原因か分かりませんが、執筆ページから遷移すると稀にリビジョンが自動作成されていました。
オートセーブの自動作成の時間を1週間に伸ばしておくと少しマシな気がしたのでこのコードを使っています。
一応バックアップ機能はある?
リビジョンと自動保存を上記の方法で停止しましたが、
「以前のバージョンより新しい自動保存版があります。」と
「このサイトを離れますか?」の2つの機能は使えるようです…
後者についてはChromeブラウザの機能なのでしょう。
前者の自動保存版の表示はどうしているのか分かりません。
今回の方法ではリビジョンも下書きも1つは作成されることがあったので、その1つの自動保存から引っ張ってきているのかもしれませんね...。
追記
下書きが保存されているデータベースを確認することがあったので補足です。
下書きを停止しても1つは生成されていると書きましたが、どうやら生成を停止しても“中身が空の状態”の下書きが1つは作成されるようです。
まとめ
Wordpressでリビジョンや自動保存を停止、制御する方法のまとめでした。
リビジョンと下書きの違いだけでもややこしいので、制御するのもややこしいです…
今回プラグインを使う方法はご紹介しませんでしたが、できればこれくらいの処理は軽量化、セキュリティの観点からプラグインレスで実装したいところです。
使わない過去記事などのリビジョンはただのゴミとなるので生成を控えればすこ~しだけサイトが高速化できるかも?
リビジョンや下書きが無くても執筆中は記事を非公開にしておいて、更新を押せば上書き保存されるので実質バックアップできます。
公開後の記事に関しては修正程度ですぐに済むことが多く、バックアップなんか要らないしね…
Wordpressは時々過保護である・w・