WordPressの魅力の一つなのが、プラグインを利用した機能拡張。しかし、プラグイン同士の機能が衝突することで問題を引き起こすこともあります。そこで、プラグインの衝突とは何か、どのようにウェブサイトに影響を与えるのか、そして衝突が起こってしまった場合の解決策について解説します。
目次
プラグインの衝突とは
プラグインの衝突(コンフリクトとも言います)とは、2つ以上のWordPressプラグインを有効化した際に、それぞれのプラグインが互いに干渉し合い、WordPressの動作に問題を引き起こす状態を指します。これは、プラグインが同じリソースを利用しようとする、または一方のプラグインが他方のプラグインの機能を妨害することで起こります。
できれば起こってほしくない問題の一つですが、もし衝突が起こってしまったら、なるべく速やかに対応するのが望ましいでしょう。
プラグイン衝突による問題は直接的なものからパフォーマンス低下まで様々
プラグインの衝突は、直接的な表示エラーが発生する場合もあれば、ウェブサイトのパフォーマンスに影響を与えるケースまであります。
例えば、ウェブサイトの挙動がおかしくなったり、特定の画面や要素が正しく表示されなくなったり、最悪の場合ウェブサイトが全く表示されなくなるという問題が発生するケースです。
一方、ウェブサイトの読み込み速度の低下という「目に見えた問題はないものの、快適に使えない」というような問題のケースがあります。
プラグイン衝突の具体例
例えば、キャッシュプラグインと画像最適化プラグインという、異なるパフォーマンス系プラグインを利用した際に衝突するケースがあります。キャッシュプラグインはウェブサイトの読み込み速度を向上させるために、ページの内容を一時的に保存します。一方、画像最適化プラグインは画像のサイズを縮小して読み込み速度を向上させます。
しかし、これら2つのプラグインが同時に動作すると、キャッシュプラグインが最適化前の画像をキャッシュしてしまい、結果として読み込み速度が遅くなる可能性があります。
また、2つ以上のSEO系プラグインや、メールフォーム系プラグイン、セキュリティ系プラグインを利用することでも同様の問題が起こることがあります。
実際、同じような機能のプラグインを導入するケースってレアではありますが、ゼロではなく実際にフォーム系が2つインストールされて有効化となっているWordPressがありました。大きな問題は起こっていないようですが、できれば一つに統合してしまいたいです。何か理由があったのかもしれません。
プラグイン衝突が起きてしまったときの対策方法
プラグインの衝突が発生したと思われる場合、以下の対策例をご参考ください。
まず、ブラウザのキャッシュをクリアするか、シークレットモードといったキャッシュが残らない状態にします。そしてこれが重要ですが、本番環境ではないテスト環境で動作確認を行います。もしテスト環境がない場合は作成することを強くお勧めします。次に、WordPressのデフォルトテーマに切り替えてテーマが問題の原因でないかを確認します。
その後、一度すべてのプラグインを無効化し、一つずつ再有効化して問題を引き起こすプラグインを特定します。一つずつプラグインを無効化したら、ウェブサイトの各画面やWordPress管理画面にアクセスし、問題が解消されているか・動作にどのような変化があるかを確認しましょう。
衝突しているプラグインが特定できたら、プラグインの設定等を調整することで衝突を回避できるか確認します。もし回避できない場合は代替のプラグインを探すか、利用テーマのfunctions.php等にコードを記述することで同等の機能が実現できないか検討します。テーマに機能を持たせたくない場合、独自プラグインとして提供する方法もあります。
最後に、同様の作業を本番環境へ反映させましょう。
管理画面にログインできない場合
もし、何らかの問題がすでに発生していて管理画面にログインできない場合は、FTPやSFTP、SSH等でサーバーにアクセスし、wp-content/pluginsディレクトリ自体をリネームすることで、一括でプラグインを無効化できます。一つずつプラグインを再度有効化する場合、pluginsディレクトリ自体の名称を戻した上で、pluginsディレクトリ配下の各プラグインを一つずつリネームし、どのプラグインが問題を引き起こしているのかを探します。
衝突を未然に防ぐには
プラグインの衝突を起こらないようにするには、できるだけ安全に配慮したWordPressの運用が前提となります。テスト環境を作成し、万が一何か合ったときは対応できるようにバックアップは作成しておきましょう。
- 更新されていない古いプラグインは導入しない
- プラグインの数は必要最小限にする
- 本番環境での有効化はせずに、事前にテスト環境で有効化テストを行う
- 定期的なバックアップを作成・保存しておく
参照:
WordPressのテストサイト・検証用環境の作り方
なぜ WordPress はバックアップが必要なのか
同等の機能を持つプラグインを有効化することで衝突はあるのか、どの程度パフォーマンスに影響があるのか
SEOプラグインとして人気のある、Yoast SEOとAll in One SEOを同時に有効化することで、衝突するのかどうか、パフォーマンスへの影響を確認してみます。
直接的な衝突はないものの、アラートが表示される
2つのプラグインを有効化すると、どちらもコンフリクト回避のためのアラートが表示されるのがわかります。
このように、ページ表示においては直接的な不具合は発生していない様です。
大きなパフォーマンスの低下は見当たらないもののクエリ数やロード時間の増加
次に、ウェブサイトのパフォーマンスの観点からも確認してみます。読み込み速度やロードしているスクリプトやファイル数、データベース呼び出し回数等を計測できるプラグインのQuery Monitorを利用して計測しました。
2つのプラグインを有効化して確認してみたところ、読み込み時間やデータベース呼び出し回数は増えたものの、特に気になるパフォーマンス低下は見られませんでした。
ただし、似たような機能を使っていたり、付随するスクリプト等の呼び出しが増えるため、パフォーマンスの観点からは、できる限り似た機能を持つプラグインを複数利用することは控えるのが推奨されます。
各状態のQuery Monitorの状態のスクリーンショットです。(右上の各値がQuery Monitorが検出した数値)
以下、今回の各検証を表に表すとこうなります。高機能なプラグイン程、パフォーマンスに影響を与えるため注意が必要です。
ページ生成時間 | 最大メモリ使用量 | データベースクエリー(時間) | データベースクエリー(数) | |
---|---|---|---|---|
Query Monitorのみ有効 | 0.19s | 8.7MB | 0.01s | 31Q |
Yoast SEOのみ有効 | 0.23s | 11.8MB | 0.01s | 48Q |
All In One SEOのみ有効 | 0.29s | 14.7MB | 0.02s | 55Q |
Yoast SEO と All In One SEO両方を有効 | 0.37s | 17.8MB | 0.03s | 70Q |
プラグイン衝突を避けた安全なWordPress管理を
WordPressのプラグイン衝突はWordPress運用においてできるだけ起こってほしくない不具合の一つですが、適切な対策を講じることで衝突のリスクを低くすることが可能です。
既存WordPressのプラグインが衝突していることで不具合が発生している、パフォーマンス低下が懸念されるといった場合は、WordPress保守管理サポートによって安全な運用へとつながる可能性があります。お気軽にご相談ください。
コメントを残す