WordPress リビジョンを削除し、テーブルを最適化してDBの容量を削減
公開日:
:
WordPress
WordPress リビジョン機能
リビジョンは過去の記事を保存してくれる WordPress のデフォルト機能です。
リビジョンは下書き保存やプレビューをした時増えていき、DBに大量に残り、IDも肥大化させます。
パフォーマンス向上の為には、リビジョンを削除、無効化、制限が必要になる場合がありますので、そのやり方をメモしておきます。
WordPress リビジョンを無効化
wp-config.php を編集してリビジョンを無効化
wp-config.php に以下のコードを1行足すだけです。
define('WP_POST_REVISIONS', false);//リビジョンを停止
一番下の require_once(ABSPATH . ‘wp-settings.php’); 行より前に追記する。
wp-config.php を編集してリビジョン数を制限
数字を設定するとリビジョンの数を指定することも出来ます。
define("WP_POST_REVISIONS", 5);//0で停止
(ちなみに自分はサイトの設置時に 1 にする事が多いです。)
プラグインでリビジョンを無効化
他にもプラグインでリビジョンを無効化することも出来ます。
「リビジョンコントロール」プラグイン
リビジョンを停止させたり、数の制限や他細かい設定をすることも出来ます。
「Disable Revisions」プラグイン
インストールし、有効化するだけでリビジョンを停止出来ます。
WordPress MySQLのリビジョン削除と最適化
既に不要なリビジョンが溜まってしまっている場合、SQL文で削除出来ます。
SQL文で wp_posts テーブルのリビジョンだけ削除
wp_posts テーブルの post_status 項目が「inherit」で post_type 項目が「revision」になっているデータがリビジョンのデータなので、SQL文は以下になります。
DELETE FROM wp_posts WHERE post_status = 'inherit' AND post_type = 'revision';
SQL文でリビジョン関連のデータすべてを削除
wp_posts テーブル だけでなく、関連している wp_term_relationships テーブルと、wp_postmeta テーブルのリビジョンも削除したい場合のSQL文は以下になります。
DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision';
テーブルを最適化して容量を削減
SQL文でリビジョンを削除したはずなのにデータ容量があまり変わらない場合、データがフラグメント化(歯抜け)状態になってしまっています。
その場合は、SQL文でテーブルを最適化します。
OPTIMIZE TABLE wp_posts;
最適化をすると、容量がかなり削減されると思います。
全テーブル最適化したらもっといいと思います。
phpMyAdmin が使える状況ならば、最適化したいテーブルを選択し、プルダウンメニューから「テーブルを最適化する」を選択すると一気に最適化されます。
プラグインでリビジョンを削除
他にもプラグインでリビジョンを削除することも出来ます。
「Optimize Database after Deleting Revisions」プラグイン
リビジョンの削除とデータベースの最適化を行うことのできるプラグイン。
WordPress 自動保存を無効化
リビジョンついでに、WordPress には、記事編集中に内容を定期的に保存してくれる自動保存という機能もあります。
初期状態では、自動保存は有効で、60秒間隔です。
混同しがちですが、自動保存はリビジョンとは違い、DBは肥大化しないものです。
しかし、パフォーマンスが重く感じたりして、うざったい時があるので、その制御方法もメモしておきます。
functions.php を編集して自動保存を停止
functions.php に以下のコードを追記すれば無効化します。
function autosave_stop() { wp_deregister_script( 'autosave' ); } add_action( 'wp_print_scripts', 'autosave_stop' );
注意:
・Theme Checkプラグインで見るとエラーが出るらしい。
・ブロックエディターでは使えないらしい。
wp-config.php を編集して自動保存の間隔の変更
wp-config.phpに以下のコードを追記。
define( 'AUTOSAVE_INTERVAL', 1800 );//自動保存を30分ごとに変更
一番下の require_once(ABSPATH . ‘wp-settings.php’); 行より前に追記する。
関連記事
-
-
WordPress タイトルの変更
テンプレートタグ the_title(); get_the_title(); WordPress
-
-
WordPress の PHP をちょっと見てみよう Ⅲ
前記事の続きで、wp-settings.php の91行目あたりから見ていきます。 次は、wp
-
-
WordPress カレンダー カスタマイズ(add_filter版)
前回、「WordPress の PHP をちょっと見てみよう Ⅲ」でフックをやったので、カレンダーで
-
-
WordPress 自作フォーム その3(チェックボックスなど)
以前、WordPress 自作フォーム その1の記事で Wordpress で自作フォームを作ってみ
-
-
WordPress レスポンシブ テンプレート 元にサイトを作ってみる その2
DEMO を見る カスタム投稿タイプ functions.php 今回は3つのリストメニュ
-
-
WordPress フォルダー・ファイル系の関数 is_dir や opendir や exif_imagetype で Warning エラー
Wordpress の管理画面でフォルダーの中身を読み込む関数 opendir でエラー Word
-
-
WordPressでカテゴリー名も検索にひっかけるプラグイン「Search Everything」
WordPressでカテゴリーも検索にひっかけるプラグイン「Search Everything 8.
-
-
WordPress レスポンシブ テンプレートコーポレート用(シンプル・カスタマイズ用)ダウンロード
WordPress レスポンシブ テンプレートコーポレート用(シンプル・カスタマイズ用)ダウンロード
-
-
WordPress レスポンシブ テンプレート 元にサイトを作ってみる その1
「レスポンシブ テンプレート の メニューやブログの設置」の記事では、メニューやブログの設置例をやっ
-
-
WordPress エラー:Failed to load plugin: table from url https://cdn.tinymce.com/4/plugins/table/plugin.min.js
WordPress エラーの状態 WordPress 管理画面のテキスト入力欄で(ビジュアルタブの