WordPress は自動保存や下書き保存の際に上書きではなく別データとして保存していきます。それがリビジョンです。放っておきますと膨大なデータが溜まり表示にも負荷がかかります。ずっと気になっていて放置していたことの対策です。
01リビジョンとは
リビジョンは改訂、訂正、修正といった意味の言葉で、WordPress の場合は記事データのバックアップということになります。下書き保存したり、自動保存状態のまま終了した場合にはリビジョンが保存されます。
記事の編集ページの設定に「◯件のリビジョン」とあります。これがリビジョンで、クリックしますと記事のバックアップが表示され、いずれかのバックアップに戻すことができます。便利で安全ではあるのですが、現実問題として公開した記事のバックアップは必要ありませんので削除したほうがデータベースを圧迫しませんし、体感はできないにしても表示も早くなると思います。
データベースではこうなっています。リビジョンにもひとつずつ ID がふられレコード(行)も別になっています。
02リビジョンの削除
リビジョン削除のためのプラグインもあるようですが、こんなことにプラグインを使っていちゃだめです(笑)。とは言っても、リビジョンを削除し終わったらプラグインも削除すればいいわけですからそのほうが安全かもしれませんね。
とにかく、先に進みます。
phpMyAdmin で該当データベースを選択し、SQL コマンドで削除します。その前にリビジョンが何レコードあるかカウントしてみます。
SELECT COUNT(post_type='revision' or null) FROM `wp_posts`;
この場合、「 or null 」をつけないとすべてのレコードをカウントしてしまいます。
2714レコードあります。記事数 1577 にしては少ないのは WordPress に移行する前の記事が 1259 記事あるからです。WordPress で書いた記事を計算してみますと1記事あたり 8~9リビジョンあるということになります。
実際にリビジョンを削除してみる
まず、wp_posts テーブルをバックアップしておきましょう。phpMyAdmin でテーブル wp_posts を選択し、エクスポート > 実行ボタン をクリックすればファイルがローカルに落ちてきます。作業に失敗したら、該当テーブルを削除し、インポートをクリックしダウンロードしたファイルを指定すれば元に戻ります。
データベースを直接触る際に危険だと脅す記事がありますが、バックアップを取っておけば簡単に対処できます。phpMyAdmin はそういうツールです。
早速削除しましょう。
DELETE FROM wp_posts WHERE post_type='revision';
あっという間もなく 2714行削除されました。
なお、削除のための条件に post_status = ‘inherit’ を指定する必要はありません。
03リビジョンの回数制限
リビジョンを残さないようにしたり、回数制限をかけるには、wp-config.php に次の設定を追加します。
// リビジョンなし
define('WP_POST_REVISIONS', false);
// 回数指定
define('WP_POST_REVISIONS', 3);
挿入場所は最下行の require_once ABSPATH . ‘wp-settings.php’; の上です。
wordpressリビジョン削除回数制限
04リビジョンは必要あるか?
そもそもリビジョンは必要かですが、リビジョンなしでいろいろ試してみたところでは、仮に下書き保存せずに終了したとしても自動保存されたものは残っていますので必ずひとつ前には戻れるということです。自動保存の時間はデフォルトで60秒です。
ですので、リビジョンが必要な局面というのは、あの時の記述に戻したいということがある場合に有効ということになり、それ以外では手動で下書き保存する必要はないということになります。
結論としては、2、3回残すようにしておくのが一番ということになります。
05リビジョン削除ボタンの作成
とは言っても、仮に3回残すとして100記事も書けば300リビジョンが溜まってしまいます。そうした場合に、投稿ページに手動で該当記事のリビジョンをすべて削除するボタンができれば便利になります。
記事作成ページに独自ボタンが作れればできそうな気がします。調べてみましょう。次回です。