特定のテーマからいくつかのプラグインを無効にしたいのですが、無効にするには deactivate_plugins
フックを使用しています。以下は私のコードです。
add_action('wp_head','disable_plugins');
function disable_plugins(){
include_once(ABSPATH.'wp-admin/includes/plugin.php');
$current_theme = wp_get_theme();
$current_theme_name = $current_theme->Name;
if($current_theme_name == 'Twenty Sixteen'){
if ( is_plugin_active('press-release/init.php') ) {
deactivate_plugins('press-release/init.php');
}
}
}
このコードはwp_headフックでプラグインを無効にしますが、テーマが26のときだけアクティブプラグインを無効にし、他のテーマで有効または無効にしておきたいという問題があります。
しかし私のコードはすべてのテーマのプラグインを無効にします。 :(
他の解決策は各プラグインのcssファイルとjsファイルの登録を解除することでしたが、すべてのプラグインのすべてのcssファイルとjsファイルを見つけるのは困難です。
この場合あなたができるなら私を助けてください。ありがとう。
コメントに@Sumitが言っていること(そしてあなたが自分で見つけたこと)は正しいです。テーマ内で プラグインを非アクティブ化する場合 は、再度アクティブ化されるまで永久に非アクティブ化されます。
また、無効化アクションをwp_head
にアタッチすると、ページロードごとに実行されますが、これは必須ではありません。あなたがする必要があるのはテーマが活性化されたときにプラグインを非活性化し、他のテーマが活性化されたときにプラグインを再活性化することです。これにはアクションフックがあります:起動時に after_switch_theme
、無効化時に switch_theme
。だからあなたは持っているでしょう:
add_action('after_switch_theme','disable_plugins');
add_action('switch_theme','enable_plugins');
あなたはすでにdisable_plugins
関数を持っています、もう一つはあなたが自分で書く必要があるでしょう。