私は今までWordpressを使っていて自動保存がありがたいと思ったことはありません。自動保存されなくても記事を書いている途中で手動保存すれば事足りるのです。無情にも編集画面を開いているあいだ、時間の経過と共にリビジョンが増えてゆきます。しかしリビジョンで保存されたバージョンが必要になることはありませんでした。
でも、このリビジョン機能があるためにどうしても定期的に行わないといけない作業がありました。それはデータベースのクリーンアップです。
WordPressの自動保存でDBが肥大化する
WordPressでは、記事を編集している途中に自動で保存してくれる機能がありデフォルトで有効になっています。自動保存はリビジョン回数として確認でき、リビジョンとして保存されたデータから元のバージョンに復元できます。
メリットとデメリット
自動的に保存してくれるので、記事を保存し忘れた時や急に電源が落ちた時などに役立ちます。しかし、実際そんなことがあるわけでもなく、使わないリビジョンが無制限に貯まってゆき、DBが肥大化してサイトが重たくなります。
自動保存される記事は、差分ではなく1つの記事として保存されるため、リビジョン回数が50とすると同じような記事のデータが50個存在していることになります。
いくつもの記事を同時進行で作成したり既存の記事を更新していると、リビジョンで保存されている記事は膨大な数になってきます。そして自動的に付与される記事IDもリビジョンの数を含めてカウントされてゆきます。
データベースのクリーンアップが必要
そんな時は、WP-Optimizeなどのプラグインを使ってデーターベースのクリーンアップを行えば、不要なリビジョンは削除できてサイトのレスポンスが戻ります。
でも、そもそも不要なリビジョンが作られなければDBが肥大化することもありません。
プラグインなしで自動保存を無効にする
自動保存機能はいらないという方は、いっそのこと無効にしてしまいましょう。
リビジョンコントロールのプラグインもありますが、プラグインを導入するより設定が簡単なコードを記述する方法が良いと思います。
テーマのfunctions.phpに下記を記述する
親テーマではなく子テーマを作成して、functions.phpを編集しましょう。
子テーマの作成については下記を参照してください。子テーマとは、元のテーマ(親テーマ)とは別にカスタマイズ用のテーマを作成したものです。
たとえ親テーマが更新されても、カスタマイズされた内容は子テーマにあるため安心です。
子テーマのfunctions.phpの任意の位置に下記を記述することで自動保存を無効にできます。
// 自動保存を無効にする処理
function autosave_off() { |
これで勝手に自動保存されることはありません。
自動保存はするがリビジョンの数をコントロールする
リビジョン保存の間隔を設定する
自動保存機能は無効にしたくない、でもリビジョンの数をコントロールしたい。そんな時は自動保存の間隔を変更しましょう。たとえば30分や1時間おきに自動保存するように変更できます。
この場合は、functions.phpではなく、Wordpressのルートディレクトリーにあるwp-config.phpを編集します。
/* 30分おきに自動保存を実行する 60秒×30 = 1800(30分の場合) */ define AUTOSAVE_INTERVAL’, 1800); |
追加する場所は、
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */
の手前になります。
define(‘WP_DEBUG’, false);
/** 30分おきに自動保存を実行する 60秒×30 = 1800(30分の場合) */ /* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */ /** Absolute path to the WordPress directory. */ |
自動保存はするがリビジョン機能は停止する
これもwp-config.phpを編集します。
define(‘WP_POST_REVISIONS’, false); |
「自動保存はするがリビジョンの数を少なくする」で追記した位置と同じ場所に記述します。
この記述を行うと、記事編集画面のリビジョンの項目自体が消えて無効になります。
リビジョンの回数を制限する
リビジョンの回数を制限する場合は以下のように記述します。
/** リビジョンを10回に制限する */
define(‘WP_POST_REVISIONS’, 10); |
これで自動保存によりDBが肥大化してゆくことはありません。