web-dev-qa-db-ja.com

Wordpressはどのようにしてプラグインをインクルード/非アクティブ化しますか?

WordpressはプラグインシステムにObserver Patternを使用し、プラグインがアクティブになっているかどうかをチェックし、プラグインディレクトリをスキャンし、すべてをプラグインクラスの配列に格納します。

アクティブ化されたプラグインを取得すると、プラグインスクリプトファイルを含めるようになりますが、Wordpressがプラグインをadminで非アクティブ化したときにどのようにプラグインの包含を解除するかについて興味がありますか? Wordpressが単に標準のinclude_onceまたはrequire_onceを介してファイルをインクルードしているだけの場合、Wordpressはどのようにしてプラグインを非アクティブ化してアンインクルードしますか?

PHPにファイルをインクルードしてからアンインクルードすることはできないというのが私の理解からです(私が知っているわけではありません)。誰かが私にプラグインが含まれている特定のファイル、そしてそれらが無効にされている適切な機能やファイルを指し示すことはできますか?

Wordpressがアクティブ化されたプラグインをアクティブ化されたプラグインの配列に格納している場合は、それらを含めます。 Wordpressは、無効化されたプラグイン内の関数が既に含まれている場合にそれを呼び出さないようにするにはどうすればよいのでしょうか。

4

アクティブプラグインは次のように 'active_plugins'オプションに格納されています。

array(
  'akismet/akismet.php',
  'hello-dolly.php',
);

ページが読み込まれるたびに、WPはその配列をループしてそれらのファイルをインクルードします。それが持っているかもしれない追加のファイルを含めるのはそれぞれのプラグイン次第です。

プラグインが無効化されると、その配列から削除されます。次のページのロードでは、それはもう含まれません。

「含まない」必要はありません。

8
scribu