【WordPress】プラグイン無しでリビジョンをデータベースから削除、保存数を変更する方法!

WordPressにはリビジョン機能というものがありますが、書き換えた記事をやっぱり元に戻したいという場合などには便利な機能ですが、ほっておくとデータベースを圧迫したり、動作が遅くなる原因にもなります。
ここでは今までのリビジョンを削除し、保存数などをプラグイン無しで変更する方法を書きたいと思います。

WordPressのリビジョン機能

リビジョン(revision)とは「修正」や「改訂」といった意味があるそうで、WordPressに搭載されているリビジョン管理機能は投稿や固定ページの編集中に記事を自動保存し、古いリビジョンから過去の記事を復元することもできます。
ただリビジョンを削除する機能はありません。なのでほっておけばどんどんリビジョン数が増えていきます。

データベースのバックアップ

データベースに関わることをする場合、万が一の時のために必ずバックアップを取っておきましょう。

バックアップの取り方は下記に書いてありますので、どうぞご参考に。

【WordPress】データベースのバックアップ、プラグインを使わずMySQLをphpMyAdminから保存する方法
WordPressでは自動でデータベースをバックアップするような機能はありませんので、プラグインを使わず手動でMySQLをphpMyAdminを使って保存する方法をロリポップ、エックスサーバー、Webアリーナに分けて解説します。

保存するリビジョン数を制限する

あまりいろいろなプラグインを入れたくないという方もいると思います。
またサイトをオープンして間もない場合は、リビジョンもそんなに溜まっておらず、今後のリビジョン数を制限するだけでよいという場合もあると思います。
保存されるリビジョン数を制御するには、wp-config.phpファイルに以下のコードを追加します。

define('WP_POST_REVISIONS',数字);

数字の部分に最大保存数を入れます。

例えば5記事なら

define('WP_POST_REVISIONS',5);

記述する箇所は、

require_once(ABSPATH . ‘wp-settings.php’);

より前に記述します。前であればどこでもよいという話です。
とりあえず下記の85行目あたりに入れます。

define('WP_DEBUG', false);

/* リビジョン数を管理 */
define('WP_POST_REVISIONS',5);

/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
	define('ABSPATH', dirname(__FILE__) . '/');

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

wp-config.phpを保存してアップします。
これで5記事以上増えなくなると思います。古いものから削除されていきます。
ただ現状の投稿がすでに5を越えてリビジョン10とかになっていた場合、5になるわけではありません。

リビジョンを無効にする

リビジョンそのものを無効にすることもできます。
その場合は、

define('WP_POST_REVISIONS',false);

と書きます。

ただリビジョンを無効にすると下書き保存のプレビュー機能も無効になります。
なのでお勧めできません。

リビジョンの自動保存の間隔を設定する

リビジョンは自動で保存される機能があります。
デフォルトは、60秒のようです。
この間隔を変更するには下記を追加します。

define(AUTOSAVE_INTERVAL, <秒数>);

デフォルトは60秒なので、例えば1時間は60×60=3600です。

define(AUTOSAVE_INTERVAL, 3600);

これをさきほどの保存数管理の下に追加します。

define('WP_DEBUG', false);

/* リビジョン数、自動保存を管理 */
define('WP_POST_REVISIONS',5);
define(AUTOSAVE_INTERVAL, 3600);

/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
	define('ABSPATH', dirname(__FILE__) . '/');

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

これで最大保存数は5記事分にして、自動保存は1時間ごとという設定ができました。
ただこまめな保存を希望する場合は、3分や5分とかでも良いのではと思います。

自動保存を停止

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

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

自動保存機能は、自分で保存しなくても勝手に自動で保存してくれる機能ですが、これが役に立つ場合もあります。
書いている途中にわざわざ「更新」を押して保存するのがめんどくさいという人も多いと思います。まったく保存しない状態で、書き途中にフリーズしてしまったら?
そんなときに、自動保存機能が効いていれば、真っ白ではなくどこかの部分までは復活するでしょうから、停止しないという選択もありだと思います。

リビジョンをphpMyAdminからMySQLにアクセスし手動で削除

今までのリビジョンを手動で削除したいと思います。
もちろんあまり溜まっていなそうな方は、削除しなくても良いと思います。
MySQLをいじるのがちょっと怖いなと思う方は、プラグインからの方が良いかもしれません。
ここではphpMyAdminからMySQLにアクセスして削除する方法を書きたいと思います。

phpMyAdminからMySQLへのログインは下記を参考にしてください。

【WordPress】データベースのバックアップ、プラグインを使わずMySQLをphpMyAdminから保存する方法
WordPressでは自動でデータベースをバックアップするような機能はありませんので、プラグインを使わず手動でMySQLをphpMyAdminを使って保存する方法をロリポップ、エックスサーバー、Webアリーナに分けて解説します。

WordPressのリビジョンは、データベース上の「接頭辞_posts」の中のpost_typeという項目に格納されています。

「接頭辞_posts」をクリックします。

テーブルの右のほうを見るとpost_typeがあると思います。

rivisionとなっているデータをSQL文で削除します。
SQLタブを開きます。

デフォルトで記入されているSQL文を削除し、以下のSQL文を入力します。

DELETE FROM 接頭辞_posts WHERE post_status = 'inherit' AND post_type = 'revision';

接頭辞がwpなら

DELETE FROM wp_posts WHERE post_status = 'inherit' AND post_type = 'revision';

入力をしたら、右下のほうにある実行するボタンをクリックしてください。

これでリビジョンが全て削除されます。

念のため管理画面から記事を見てみると、リビジョンがなくなっています。

コメント