web-dev-qa-db-ja.com

プラグインがアクティブ化または非アクティブ化されたときに検出する

私が自分で作ったほとんどのウェブサイトに私が使っているスターターテーマがあります。サイトごとに異なるプラグイン依存関係があるため、現在アクティブなすべてのプラグインのリストを本質的に照合し、それらをJSONファイルに格納するスクリプトを作成しようとしています。

それから、TGM Pluginアクティベーションを使ってそのリストをループし、まだそこにないプラグインをインストールしたいと思います。

私たちはテーマディレクトリをホストするのにgitを使います。変更をプッシュすると、それらは自動的にステージングサーバーにデプロイされます。問題は、足りないプラグインをインストールするためにFTPにログインしたりWP-CLIコマンドを実行したりする必要がないことです。ローカルホストに見つからないものがある場合は、プラグインを自動的にインストールするために、テーマ自体から依存関係を取得することを望みます。

TGMファイルに手動でプラグインを追加することに頼ることはできません。

そのため、ここで私の問題は、プラグインの有効化または無効化の際にすぐに呼び出されるフックを見つけることができないように見えることです。そのリストからのプラグイン。

この上の任意の助けは非常に高く評価されます。

1
Steve North

解決策はいくつかあります。例えばactivate_plugindeactivate_pluginフックを使うことができます。

しかし...私があなたの言うとおりに理解している限りでは、プラグインのリストが変更されたときはいつでも通知され、プラグインがアクティブまたは非アクティブにされたときは通知されません。

したがって、最も簡単な方法は update_option にフックすることです。

add_action('updated_option', function( $option_name, $old_value, $value ) {
    if ( 'active_plugins' == $option_name ) {
        // update your json file based on $value
    }
}, 10, 3);
3