ブログ
7.102018
データベースから有効化されているプラグインの情報を取得したり一括で無効化したりする方法
プラグインの開発やチューニングを行う際にどのプラグインが有効化されているか確認が必要な曲面があります。
プラグインの有効化状態といえば、管理画面の「インストール済みプラグイン」の一覧から個別の有効化状態を確認する方法が一般的です。
しかし、プラグインの開発やチューニングを行う際に予期しない不具合で、ホワイトアウトしたり500エラーが発生したりと、ウェブサイトの表示自体ができなくなったことがある方もいるのではないでしょうか。
FTP等で直接ソースコードを変更している場合は対処も可能ですが、開発やチューニングを行う環境の問題でWordPress内のプラグイン画面から直接ソースコードに編集を加えるなど、事後の対処のとりようがない状況が発生することもあるでしょう。
プラグインが実行されるしくみ
WordPressのプラグインは、「pluginsディレクトリ(フォルダ)にファイルを置く」ことと「有効化」することで読み込まれ実行されています。
プラグインの新規追加メニューから操作した場合でも、WordPressの公式ディレクトリから取得したファイルがpluginsフォルダに展開されるしくみとなっていますし、zipファイルのアップロードの場合でも、FTP等で直接アップロードする場合でも、プラグインはすべてpluginsディレクトリ内にファイルがある状態となります。
また、有効化状態は管理画面のメニューを押下することで有効化するプラグインとして設定され、次回以降にWordPressでできたウェブサイトが表示される際に都度読み込まれるしくみとなっています。
つまり、プラグインを実行されるにはpluginsディレクトリに何らかの方法でファイルを置き、有効化状態に設定することであり、逆にプラグインを向こうかするにはpluginsディレクトリからファイルを削除するか、有効化状態を解除することで、読み込んで実行される状態を回避させることができます。
有効化状態を取得し活用する
プラグイン有効化の状態は、実はデータベース内に保持されています。
管理画面から有効化状態を変更することができない場合や、有効化されているプラグインをまとめて取得したい場合には、直接データベース内の情報を取得することで代用することができます。
有効化されているプラグインの一覧を取得する
すべての有効化されているプラグインを取得するには、phpMyAdmin等で以下のSQLを実行します。
SELECT * FROM wp_options WHERE option_name = 'active_plugins';
※wp_optionsの部分はそれぞれのデータベースの設定に合わせて読み替えてください。
取得結果は、エンコードされた形式で、かつpluginsディレクトリからの相対パスで、プラグインに最低限必要なコメントが含まれたPHPのプログラムのファイルパスが指定されています。
すべてのプラグインを無効化する
すべてのプラグインを無効化するには、phpMyAdmin等で以下のSQLを実行します。
UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';
※wp_optionsの部分はそれぞれのデータベースの設定に合わせて読み替えてください。
この値で「a:0:{}」と指定している部分は、リスト形式で有効化されたプラグインを保持する部分の文字列で、1件もプラグインがない場合に実際に保存される値です。従って、このSQLを実行すると、有効化しているプラグインは0件になるため、すべて無効化した状態を実現することができるわけです。
一部のプラグインを無効化する
データベースから取得したプラグインの一覧のうち、一部だけを無効化する手順はかなり複雑で、若干専門性を要します。
設定値を間違うことで全く動作しなくなる高い危険性を伴う行為ですので、専門的な知識を持つ方以外はオススメしません。
専門的な知識を持つ方にだけわかるようにまとめると、active_pluginsの値のうち、配列になっている該当する値を削除し、成形した状態で値を上書きすることです。
何のことかサッパリという方は、一旦全プラグインを停止した後で、管理画面から個別に有効化して求めている状況を構築してあげてください。
まとめ
いざというときに必要となる操作ですが、データベース内に情報を保存するWordPressならではの確認や設定箇所です。
開発やサポートの中で困ったことを専門的にサポートしますので、コラムにない内容でも是非ご相談ください。
Copyright © PLUGMIZE(プラグマイズ)