【WordPress】リビジョンの削除・管理でサイト最適化(プラグイン無し)

WordPressにはリビジョン機能がありますが、記事を編集して元に戻したいときには役立つものの、そのまま放置しておくとデータベースが膨らみ、サイトのパフォーマンス低下を招くことがあります。この記事では、これまでのリビジョンを削除し、保存数をプラグインを使わずに管理する方法をご紹介します。

現在のリビジョンの確認方法(phpMyAdmin)

現在のリビジョンを確認するには、phpMyAdmin のSQLで以下のようなクエリを実行します。

1. 記事ID、タイトル、リビジョンのみの表示がシンプルな検索

「wp_posts」のテーブルから、「post_type」が「rivision」かつ「post_status」が「inherit」のレコードを「ID」「post_title」「post_type」の項目に限定して表示させます。

phpMyAdmin – SQL
SELECT
    ID, 
    post_title, 
    post_type 
FROM 
    wp_posts 
WHERE 
    post_type='revision' AND post_status = 'inherit'

2. wp_postsテーブルからリビジョンのみに絞り込むクエリがシンプルな検索

「wp_posts」のテーブルから、「post_type」が「rivision」のレコードを表示させます。

phpMyAdmin – SQL
SELECT * FROM `wp_posts` WHERE `post_type` LIKE 'revision';

リビジョンの管理方法

リビジョン管理は、次の観点から行えます。どの方法を選ぶかは、サイトの状況や運営する人の好みによって選択してください。

  1. リビジョンを無効にする(wp-config.php)
  2. リビジョン数を制限する(wp-config.php)
  3. リビジョンの自動保存の間隔を変更する(wp-config.php)
  4. 自動保存を停止(functions.php)

1. リビジョンを無効にする

リビジョンそのものを無効にすることもできます。ただリビジョンを無効にすると下書き保存のプレビュー機能も無効になるので、注意が必要です。

それを理解した上で、無効にしたい場合は、wp-config.php に次のコードを追加します。

wp-config.php
/* リビジョンを無効 */
define('WP_POST_REVISIONS',false);

記述する箇所は、

require_once(ABSPATH . 'wp-settings.php');

より前に記述します。前であればどこでも大丈夫です。

2. リビジョン数を制限する

リビジョンの保存数を管理するためには、wp-config.phpファイルに次のコードを追加します。

wp-config.php
/* リビジョン数を管理 */
define('WP_POST_REVISIONS',5);

数字「5」の部分には最大保存数を入れます。上記の場合1つの投稿に対して5回分のリビジョンが残されます。

記述する箇所は、

require_once(ABSPATH . 'wp-settings.php');

より前に記述します。前であればどこでも大丈夫です。

これで5回分以上は増えなくなり、古いものから削除されていきます。

現状の投稿がすでに5を越えてリビジョン10などの場合には、5になるわけではありません。

サイトをオープンして間もない場合は、リビジョンがあまり溜まっていないと思いますので、今後のリビジョン数を制限するだけでも十分効果があります。

3. リビジョンの自動保存の間隔を変更する

リビジョンは自動で保存される機能(デフォルトは60秒)があり、この間隔を変更するには、wp-config.phpファイルに次のコードを追加します。

wp-config.php
define(AUTOSAVE_INTERVAL, 3600);

数字「3600」の部分には秒数を入れます。上記の場合1時間(60分×60秒=3600秒)となります。

記述する箇所は、

require_once(ABSPATH . 'wp-settings.php');

より前に記述します。前であればどこでも大丈夫です。

4. 自動保存を停止

リビジョンと自動保存の違いは、「保存されるタイミングの違い」です。

リビジョン「公開」「更新」「下書き保存」「プレビュー」などのボタンを押下した時に保存される
自動保存「公開」「更新」「下書き保存」「プレビュー」などのボタンを押下しなくても指定した時間(デフォルトは60秒)ごとに、自動で保存される

自動で保存される機能はいらないという場合は、functions.phpに下記を追加します。

functions.php
function disable_autosave() {
    wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'disable_autosave' );

自動保存機能は、手動で保存しなくても自動的に記事を保存してくれる便利な機能なので、万が一、保存しないまま作業中にフリーズしてしまっても、自動保存が作動していれば、完全に消失せずに一部を復元できる場合があります。この機能を無効にするかはそういった点からご検討ください。

MySQLにアクセスし手動でリビジョンを削除する(phpMyAdmin)

phpMyAdminでMySQL(データベース)を直接編集する際にはバックアップしておくことを推奨します。

Step.1 現在のリビジョンを確認する

次のコマンドでリビジョンの一覧を表示させ、今回削除する対象のレコードを確認します。

phpMyAdmin – SQL
SELECT * FROM `wp_posts` WHERE post_status = 'inherit' AND post_type = 'revision'

Step.2 リビジョンを削除する

先ほどのコマンドの冒頭「SELECT *」を「DELETE」に変更し、対象のレコードを削除します。

phpMyAdmin – SQL
DELETE FROM `wp_posts` WHERE post_status = 'inherit' AND post_type = 'revision';

Step.3 削除後のリビジョンを確認する

Step1と同じコマンドで念の為リビジョンを確認してください。返り値が空であれば、きちんとWordpressのリビジョンの削除が完了しています。

プラグインを使用せず、リビジョンの削除・管理でサイト最適化まとめ

本記事では、プラグインを使用せず phpMyAdmin, wp-config.php, functions.php を操作編集することでリビジョンの削除・管理を行いサイト最適化を行う方法をご紹介しました。

リビジョンに関しては、サイトの状況や運営する人の好みによって対応は様々と思いますが「リビジョンを全て削除し、リビジョンの最大数を2に設定し、自動保存を無効化する」ようにしています。

すでにリビジョンが多くあり、全て削除するのはリスクがあると思われる場合は、自動保存の無効化と最大数の設定のみ行い、過去記事を編集する際などに「更新」することでリビジョンの最大数が反映され最大数より過去のものは削除されるので、その方が安心かもしれません。

プラグインの多用は競合による不具合やアップデートのメンテナンスの煩わしさなどから最低限に留めておきたいと思っているので、最初の設定だけで事が足りるような物に関してはなるべくプラグインを使用しないようにしています。

もしそのようなお考えをお持ちでしたら、是非今回の方法をお試しください。