WordPressで全てのトランジェントを削除する方法(4つの方法)
John Turner
ジョン・ターナー
トランジェントは、プラグインがWordPressデータベースに保存する一時的なキャッシュ値です。
プラグインは、API呼び出し、複雑なクエリ、フィード取得などの高負荷な操作を実行します。ページ読み込みごとにその作業を繰り返す代わりに、結果を有効期限付きの一時的なものとして保存します。
タイマーが切れると、WordPressはそれを削除するはずです。問題は、WordPressが一時的なものを削除するのは、何かがそれを要求したときだけだということです。
プラグインが無効化されたり、開発者が一時的なキーを変更したりすると、それらの行は無期限にデータベースに残ります。
数年間稼働しているサイトでは、wp_optionsテーブルに数千もの孤立した行が蓄積される可能性があり、それぞれがそれに触れるすべてのデータベースクエリに重みを与えます。
この記事では、WordPressですべての一時的なものを削除する方法を説明します。
主なポイントは次のとおりです:
- WordPressは遅延削除を使用するため、一時的なものが蓄積されます。行は、何かがそれを要求したときにのみ削除されるため、無効化されたプラグインは孤立した行を無期限に残します。
- クリーンアップを実行する前に、まず一時的なものの数を数えてください。100行未満であれば、ほとんど影響はないでしょう。
- DB Optimizerは最も安全なプラグイン方法です。削除するものをプレビューし、最近作成されたデータを保護するために7日間の保持期間を適用し、テーブルの最適化も処理します。
- それぞれの一時的なものは、値の行とタイムアウトの行の2つのデータベース行を作成します。クリーンアップ方法は、片方だけでなく両方を削除する必要があります。
- クリーンアップ直後のわずかなサイトの遅延は正常です。プラグインは削除後の最初の要求でキャッシュを再構築します。
目次
WordPressの一時的なものとは?
一時的なものは、WordPressデータベースに保存される一時的なキャッシュ値です。プラグインは、高負荷な作業を繰り返さないために使用します。
ページ読み込みごとにリモートAPIにアクセスしたり、重いデータベースクエリを実行したりする代わりに、プラグインは操作を一度実行し、結果を一時的なものとして保存し、有効期限が切れるまで再利用します。
天気ウィジェットは現在の予報を30分間キャッシュするかもしれません。外部製品フィードを取得するプラグインは、結果を1時間キャッシュするかもしれません。一時的なものがなければ、すべてのページ読み込みで最初からそのリクエストがトリガーされます。
ここで問題が発生します。
実際、それぞれの一時的なものは、wp_optionsテーブルに2つの行を作成します:値の行(_transient_pluginname)と有効期限のタイムスタンプの行(_transient_timeout_pluginname)。真のクリーンアップのためには、両方を削除する必要があります。
WordPressはスケジュールどおりにクリーンアップしません。遅延削除を使用しており、一時的なものは何かがそれを要求したときにのみ削除されます。
一時的なものが有効期限が切れる前にプラグインが無効化されたり、コードの更新で開発者がキー名を変更したりすると、それらの行は二度と要求されません。ただそこに座っているだけです。
長年プラグインを変更してきたサイトでは、無意味な行が大量に存在することになります。
これらは何も壊しませんが、wp_optionsテーブルを肥大化させ、WordPressの管理画面を動かすクエリを含む、テーブルに対するすべてのクエリを遅くします。
WordPressの一時的なものを削除する必要がありますか?
すべてのサイトでトランジェントクリーンアップが必要なわけではありません。何かを実行する前に、問題が実際にサイトに存在するかどうかを確認するのに数分費やす価値があります。
実施する価値がある兆候
これらのいずれかが当てはまる場合は、クリーンアップを実行する価値があります:
- wp_optionsテーブルが異常に大きい(10MB超は一般的な指標)
- WordPressの管理画面の読み込みが遅い、特にダッシュボードやプラグイン設定ページ
- 最近、複数のプラグインを非アクティブ化または削除し、データが残っているのではないかと疑っている
- 行数をチェックすると、数百または数千のトランジェント行が表示される
スキップしてもおそらく問題ない兆候
サイトがこれらのいずれかのカテゴリに該当する場合、トランジェントクリーンアップはおそらく効果がないでしょう:
- サイトは高速で、データベースは正常で、ホストは永続的なオブジェクトキャッシュを有効にしています。RedisやMemcachedはトランジェントをデータベースではなくメモリに保存するため、wp_optionsでクリーンアップするものは何もありません。
- WP EngineやKinstaのようなマネージドWordPressホスティングを利用している場合。これらのほとんどはデフォルトでオブジェクトキャッシュを有効にしています。不明な場合はホストに確認してください。
トランジェント数をチェックする方法
データベース内のトランジェント行の正確な数を確認するには、phpMyAdminにログインし、SQLタブをクリックして、このクエリを実行します:
SELECT COUNT(*) FROM wp_options WHERE option_name LIKE '%_transient_%';
結果が数百または数千の場合、クリーンアップは価値があります。100未満の場合は、おそらく労力に見合う価値はありません。
すべてのWordPressの一時的なものを削除する方法
これを行うには4つの方法があります。適切な方法は、すでにアクセスできるツールによって異なります。
- 方法1:DBオプティマイザー:最も初心者向けのオプションです。何かを確認する前に削除するものを正確に表示し、過去7日間に作成されたデータには触れません。
- 方法2:WP Rocket:WP Rocketがすでにキャッシュプラグインである場合、トランジェントクリーンアップはデータベースタブに組み込まれています。
- 方法3:WP-CLI:1つのコマンドで完了します。サーバーへのSSHアクセスを持つ人に最適です。
- 方法4:phpMyAdmin:どのホストでも機能する直接SQLクエリ。
トランジェントの肥大化がすべてWooCommerceの製品キャッシュによるものである場合、まず組み込みのショートカットがあります。
WooCommerce » ステータス » ツールに移動します。WooCommerceトランジェントのみ、またはすべてのWordPressトランジェントをクリアします。

それ以外の場合は、以下の4つの方法のいずれかを使用してください。
これにはDuplicator Proの使用をお勧めします。新しいバックアップを作成し、「pre-transient-cleanup」のような具体的な名前を付けて実行させてください。

バックアップ画面に表示されたら、続行する準備ができました。クリーンアップ後に予期しない動作が発生した場合は、ワンクリック復元パスがあります。
方法1:DB Optimizerを使用する(推奨)
DB Optimizerは、トランジェント、リビジョン、テーブルオーバーヘッド、オートロードサイズ、WordPressのゴミ箱を削除するデータベース最適化プラグインです。削除するもののプレビューを表示し、最近作成されたデータを保護するために保持期間を設定します。

Duplicator Proプランをご利用の場合、DB Optimizerは無料で含まれています。有効化したら、WordPress管理画面のサイドバーからDB Optimizerを開きます。
ダッシュボードには、0から100までのヘルススコアが、いくつかのカテゴリにわたる色分けされたバーで表示されます。トランジェントのスコアを確認して、クリーンアップが必要かどうかを確認してください。

必要な場合は、クリーンアップに移動します。トランジェントとキャッシュの行を見つけます。データベース内の期限切れトランジェントの数と、それらを削除することで解放できるスペースの量が表示されます。

削除する必要がある他のデータと一緒に選択し、選択した項目をクリーンアップをクリックします。または、トランジェントの行の横にあるクリーンアップボタンをクリックします。
ポップアップで、クリーンアップを実行したいことを確認します。

保持期間のしきい値はデフォルトで7日です。これは、過去1週間に作成されたものには触れないことを意味します。これにより、タイムスタンプで期限切れになっていても、通常使用されているアクティブなプラグインキャッシュが保護されます。

DB Optimizerがトランジェントの削除を完了すると、ヘルススコアが更新され、トランジェントの数が減少します。
方法2:WP Rocketを使用する
WP Rocketがすでにサイトで実行されている場合は、追加のインストールは必要ありません。トランジェントのクリーンアップは、データベースタブに組み込まれています。

WordPress管理画面の設定 » WP Rocketに移動し、データベースタブをクリックします。トランジェントクリーンアップセクションまでスクロールします。

2つのオプションが表示されます。
- すべてのトランジェントを削除:アクティブなトランジェントを含むすべてをクリアします。プラグインは次のリクエストでそれらを再構築しますが、最初の数回のページ読み込みでわずかな遅延が発生する可能性があります。
- 期限切れのトランジェントのみを削除:より安全なオプションです。期限切れの時間を過ぎた行のみを削除し、プラグインがアクティブに使用しているものには影響しません。
好みのオプションを選択し、変更を保存して最適化をクリックします。WP Rocketはすぐにクリーンアップを実行します。
これは、自動的にスケジュール実行できる唯一の方法です。設定が完了すると、WP Rocketは手動で戻って実行する必要なしに、継続的なトランジェントクリーンアップを処理します。
方法3:WP-CLIを使用する
SSHアクセスがあれば、WP-CLIは数秒でトランジェントクリーンアップを処理します。
SSH経由でサーバーに接続し、WordPressのルートディレクトリに移動します:
cd /path/to/your/wordpress
期限切れのトランジェントのみを削除するには、次を実行します。
wp transient delete --expired
すべてのトランジェントを削除するには、次を実行します。
wp transient delete --all
削除された一時データの数がターミナルに表示されるため、実行されたことを確認できます。
--allを使用する前に、このコマンドは期限切れのものだけでなく、アクティブな一時データも削除します。プラグインは次のリクエストでそれらを再作成しますが、再構築中に一時的な遅延が発生します。
保守的に行いたい場合は、--expiredから始めてください。
WordPressマルチサイトネットワークを実行している場合、--allはサイトレベルの一時データのみをクリアします。ネットワーク全体の一時データをクリアするには、2番目のコマンドを実行します。
wp transient delete --all --network
方法4:phpMyAdminを使用する
プラグインをインストールしたくない場合やSSHアクセスがない場合は、phpMyAdminを使用して一時データをクリーンアップできます。これはデータベースに直接アクセスします。
ホスティングコントロールパネルにログインし、phpMyAdminを開きます。左側のサイドバーからWordPressデータベースを選択し、上部にあるSQLタブをクリックします。

何かを実行する前に、テーブルプレフィックスを確認してください。phpMyAdminの左側のパネルを見て、オプションテーブルの名前がwp_optionsであることを確認してください。
一部のインストールでは、インストール中に設定されたカスタムプレフィックス(mysite_optionsなど)が使用されます。ご自身のものが異なる場合は、クエリ内のwp_optionsを正しい名前に置き換えてください。
このクエリをSQLタブに貼り付けて、実行をクリックします。
DELETE FROM wp_options WHERE option_name LIKE '%_transient_%';
この単一のクエリは、WordPressが各一時データに対して格納する2種類の行を削除します。値の行(_transient_pluginname)と有効期限のタイムスタンプの行(_transient_timeout_pluginname)です。
一度実行すると両方がクリアされます。値の行のみを削除した場合、タイムアウトの行は孤立したゴミとして残ります。
クエリの実行後、左側のサイドバーからwp_optionsテーブルを選択し、テーブルの最適化をクリックします。行を削除しても、ディスクスペースは自動的に解放されません。テーブルを最適化することが、実際にテーブルを縮小するステップです。
一時的なものの蓄積を今後防ぐ方法
一度限りのクリーンアップは役立ちますが、原因に対処しないと、カウントは再び増加します。これが再び発生しないようにする方法は次のとおりです。
永続的なオブジェクトキャッシュを有効にします。ホストがRedisまたはMemcachedをサポートしている場合は、オンにしてください。
一時データはデータベースではなくメモリに格納され、ネイティブに期限切れになり、wp_optionsに書き込まれることはありません。これが最も効果的な長期的な解決策です。
クリーンアップを実行しても、数日以内に一時データの数が数千に戻る場合は、プラグインが期限切れになるよりも速く生成しています。これはクリーンアップの問題ではなく、プラグインの動作の問題です。
WP-CLIでwp transient listを使用するか、Transients Managerプラグインを使用して、どのプラグインが行を所有しているかを確認し、それらが生成される頻度を減らすための設定オプションがあるかどうかを確認してください。
一時的なものの削除に関する問題のトラブルシューティング
単純なデータベースクリーンアップでも問題が発生する可能性があります。最も一般的な問題とその解決策を以下に示します。
一時データを削除した後にサイトが遅くなった
クリーンアップ直後の数分間、ページ読み込みが遅くなることでこれに気づくでしょう。これは正常で一時的なものです。
プラグインは、クリーンアップ後の最初の要求でキャッシュデータを再作成しています。10〜15分待ってから再読み込みしてください。速度は、クリーンアップ前と比較して通常に戻るか、改善されるはずです。
一時的なデータがすぐに戻ってきました
クリーンアップを実行しましたが、DBオプティマイザーまたは行数チェックでは、数時間以内に数百の一時データが再び表示されます。サイト上のプラグインが有効期限が切れるよりも速く一時データを生成しているため、これはそのプラグインの設定またはコードの問題であり、クリーンアップ方法の問題ではありません。
原因を特定するには、WP-CLIで `wp transient list` を実行して、一時データ名とそのプラグインの所有者をすべて表示します。
または、Transients Managerをインストールして、**ツール » 一時データ**の下のリストを参照してください。
プラグインを特定したら、その設定でキャッシュ頻度を制御するオプションを確認してください。設定がなく、量も不当な場合は、プラグインのサポートチームに連絡する価値があります。
phpMyAdminクエリがエラーを返しました
最も一般的な原因は、テーブルプレフィックスの不一致です。WordPressのインストールでは、インストール中に設定されたカスタムプレフィックスが使用されている可能性があり、クエリが間違ったテーブル名をターゲットにしています。
`wp-config.php` を開き、`$table_prefix` という行を見つけます。クエリ内の **wp_options** を正しいプレフィックス(**mysite_options** など)に置き換えて、再度実行してください。
エラーがアクセス権に言及している場合は、データベースユーザーにDELETE権限がない可能性があります。ホストに連絡して、データベースユーザーが必要な権限を持っていることを確認してください。
クリーンアップ後にプラグインが動作しなくなりました
表示されるのは、プラグインの機能が空の結果を返したり、エラーを発生させたり、初めてインストールされたかのように動作したりすることです。プラグインが依存していたアクティブな一時データを削除しました。
適切にコーディングされたほとんどのプラグインは、次のリクエストで自動的に再作成します。影響を受けたプラグインを無効化してから再度有効化して、キャッシュの再構築を強制してみてください。
再有効化しても回復しない場合は、開始前に作成したDuplicatorバックアップを復元してください。
これにより、クリーンアップ前のデータベースの状態に正確に戻り、そこから、再度試す前に問題のあるプラグインを特定できます。
何も機能していません
最初にバックアップを復元してください。WordPress管理画面で **Duplicator Pro » Backups** を開き、開始前に作成したバックアップを見つけて、復元を実行します。

もしWordPress管理画面にアクセスできない場合は、Duplicator ProのディザスタリカバリURLを使用して、wp-adminがロックアウトされている場合でもサイトを復元できます。

バックアップをDuplicator Cloudに送信した場合は、リモートでサイトを復元できます。

サイトが正常に戻ったら、表示された具体的なエラーメッセージをホストのサポートチームに伝えてください。
エラーの原因がわからない場合は、WordPress.orgのサポートフォーラムが次の良い場所です。プラグインリストと正確なエラーテキストを投稿してください。
よくある質問(FAQ)
WordPressの一時データとは何ですか?
一時データとは、WordPressデータベースに保存される一時的なキャッシュ値です。プラグインは、リモートAPI呼び出しや複雑なデータベースクエリなどの時間のかかる操作の結果を保存するために使用し、各ページロードでその作業を繰り返す必要がないようにします。
各トランジェントには有効期限があります。期限が切れると、WordPressは自動的に削除するはずですが、実際には常にそうとは限りません。
WordPressのトランジェントをすべて削除しても安全ですか?
はい、ただし条件が1つあります。データベースを最初にバックアップしてください。トランジェントは一時的なものとして設計されており、WordPressやプラグインは実際に必要とするものを再作成します。
リスクは永続的な破損ではありません。一時的な遅延が発生し、プラグインがキャッシュを再構築しますが、まれに、正常に回復しないように設計されたプラグインもあります。バックアップは両方のシナリオをカバーします。
トランジェントはどのくらいの頻度で削除すべきですか?
普遍的なスケジュールはありません。データベースが正常で、サイトが高速であれば、緊急性はありません。wp_optionsの肥大化や管理画面の遅延が見られる場合は、クリーンアップを実行してください。多くのプラグインを使用しているアクティブなサイトでは、月1回のクリーンアップが妥当です。
トランジェントを削除するとサイトの速度は向上しますか?
データベースがどれだけ肥大化しているかによります。wp_optionsテーブルに数千もの孤立したトランジェント行がある場合、それらを削除すると、特にWordPress管理画面でのクエリ時間が大幅に短縮される可能性があります。100行未満のトランジェント行があるクリーンなデータベースでは、違いに気づかないでしょう。
サイトを移行する前にトランジェントを削除すべきですか?
実行する価値はあります。肥大化したデータベースの移行には時間がかかり、バックアップファイルのサイズも大きくなります。クローンまたは移行する前にトランジェントのクリーンアップを実行すると、より軽量なデータベースを移動することになり、移行が迅速化され、バックアップファイルのサイズも小さくなります。
期限切れのトランジェントを削除することと、すべてのトランジェントを削除することの違いは何ですか?
期限切れのトランジェントは、有効期限が切れており、目的を果たしていません。それらを削除しても常に安全です。すべてのトランジェントを削除することには、プラグインがまだ積極的にキャッシュとして使用している行も含まれます。WordPressは次のリクエストでそれらを再作成しますが、プラグインが再構築する際に一時的な遅延が発生します。保守的に行いたい場合は、まず期限切れのものだけから始めてください。
ホストがRedisまたはMemcachedを使用している場合はどうなりますか?
ホストで永続的なオブジェクトキャッシュが有効になっている場合、トランジェントはデータベースではなくメモリに格納されます。SQLクエリとDBオプティマイザーは、データベースのトランジェント行が存在しないため、削除対象を見つけることができません。これは正常な動作であり、エラーではありません。オブジェクトキャッシュがアカウントでアクティブかどうかを確認するには、ホストに問い合わせてください。
WP-CLIの--allフラグは、マルチサイトのトランジェントもクリアしますか?
いいえ。--allフラグはサイトレベルのトランジェントのみをクリアします。WordPressマルチサイトネットワークでは、ネットワーク全体のトランジェントをクリアするために、2番目のコマンドwp transient delete --all --networkを実行する必要があります。これをスキップすると、ネットワークレベルのトランジェント行はデータベースに残ります。
データベースは自分でクリーンな状態を維持しません
サイトのすべてのデータベースクエリに静かにオーバーヘッドを追加していた行を削除しました。wp_optionsテーブルはより軽量になり、管理画面の読み込みが速くなり、知らないうちに蓄積されるものが1つ減りました。
今後は、一時的な修正と見なすのではなく、一時的なカウントに注意してください。クリーンアップ後1週間以内に数千件にまで増加した場合は、対処する価値のあるシグナルです。
見落としがちなもう1つの点:一時的な行を削除しても、ディスク上のデータベースは自動的に縮小されません。それらの行が占めていたスペースは、最適化を実行するまで予約されたままになります。
DB Optimizerは、クリーンアッププロセスの一部としてこれを処理します。その最終ステップが、実際にスペースを回収し、完全なパフォーマンスメリットを得るものです。
Duplicator Pro を使用して DB Optimizer を無料で入手しましょう!
このチュートリアルがデータベースの最適化に役立った場合は、これらのガイドもブックマークする価値があります。