web-dev-qa-db-fra.com

désactiver les plugins actifs pour un thème spécifique

Je veux désactiver certains plugins d'un thème spécifique. J'utilise un crochet deactivate_plugins pour le désactiver. ce qui suit est mon code.

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');    
        }
    }
}

Ce code désactive les plugins sur le hook wp_head, mais le problème est que je veux que les plugins actifs ne se désactivent que lorsque le thème est Twenty Seize tout en voulant rester activé ou désactivé, comme c'était déjà le cas sur d'autres thèmes.

Mais mon code désactive les plugins pour tous les thèmes. :(

Une autre solution consistait à annuler l’enregistrement des fichiers css et js de chaque plug-in, mais il est difficile de trouver tous les fichiers css et js pour tous les plug-ins. Il sera également désenregistré pour tous les thèmes alors que je souhaite désactiver les plug-ins actifs sur un thème spécifique.

S'il vous plaît aidez-moi si vous pouvez dans ce cas. Merci.

1
Bhuvnesh Gupta

Ce que @Sumit dit dans les commentaires (et que vous avez découvert par vous-même) est correct. Si vous désactivez un plugin dans un thème, il est désactivé de manière permanente, jusqu'à ce qu'il soit réactivé.

De plus, si vous associez votre action de désactivation à wp_head, elle est exécutée à chaque chargement de page, ce qui n'est pas nécessaire. Ce que vous devez faire est de désactiver le plug-in lorsque le thème est activé et de le réactiver lorsqu'un autre thème est activé. Il y a des crochets d'action pour cela: after_switch_theme à l'activation et switch_theme à la désactivation . Donc vous auriez:

add_action('after_switch_theme','disable_plugins');
add_action('switch_theme','enable_plugins');

Vous avez déjà la fonction disable_plugins, l’autre que vous devrez écrire vous-même.

1
cjbj