web-dev-qa-db-fra.com

Wordpress Disable Plugin sur des pages/messages spécifiques

Est-ce que quelqu'un connaît une méthode vraiment efficace pour désactiver un plugin (qui est actif) sur une page spécifique? Certains plugins ne sont pas vraiment nécessaires dans certaines pages du site Web. Ils contiennent de nombreux fichiers CSS et JavaScript qui ralentissent la vitesse de chargement du site Web et peuvent parfois être en conflit avec d'autres fichiers.

Je sais que je peux jouer avec le code du plugin, etc., mais ce n'est pas vraiment efficace.

Des idées?

Merci d'avance!

22
Gabriel

essayez le plugin "Plugin Organizer" Wordpress de Jeff Sterup. Vous devez activer "Chargement sélectif du plugin" sous ses paramètres (assurez-vous de suivre les instructions données pour l'activer).

Ensuite, dans votre éditeur de publication/page, une zone située sous la fenêtre de composition avec des cases à cocher vous permet de désactiver le plug-in correspondant à cette page.

m'a pris probablement plus de 20 recherches dans le référentiel de plugins Google et Wordpress pour enfin trouver une solution simple. J'espère que ça marchera pour toi aussi!

36
Jesse B

Voici l’idée .

 add_filter( 'option_active_plugins', 'lg_disable_cart66_plugin' );

 function lg_disable_cart66_plugin($plugins){

      if(strpos($_SERVER['REQUEST_URI'], '/store/') === FALSE AND strpos($_SERVER['REQUEST_URI'], '/wp-admin/') === FALSE) {
         $key = array_search( 'cart66/cart66.php' , $plugins );
         if ( false !== $key ) unset( $plugins[$key] );
      }

     return $plugins;
 }
16
mainpart

Je sais que c'est vieux mais ce fil était exactement ce dont j'avais besoin.

La seule réponse à la réponse de numediaweb est que l'action de suppression requiert la même priorité que l'action d'ajout. 

Crochets dans le plugin

add_action('wp_print_styles', 'easy_fancybox_enqueue_styles', 999);
add_action('wp_enqueue_scripts', 'easy_fancybox_enqueue_scripts', 999);
add_action('wp_head', 'easy_fancybox', 999);

Code pour enlever les crochets

function remove_easy_fancybox() {

     global $post;
     $ids = array(12,34,55);
     if(in_array($post->ID,$ids)):
          remove_action('wp_print_styles', 'easy_fancybox_enqueue_styles', 999);
          remove_action('wp_enqueue_scripts', 'easy_fancybox_enqueue_scripts',999);
          remove_action('wp_head', 'easy_fancybox', 999);

          wp_dequeue_script( 'jquery.fancybox' );
          wp_dequeue_script( 'jquery.easing' );
          wp_dequeue_script( 'jquery.mousewheel' );
          wp_dequeue_script( 'jquery.metadata' );
     endif;
}

add_action('wp_head', 'remove_easy_fancybox', 1);

De http://codex.wordpress.org/Function_Reference/remove_action

Important: Pour supprimer un hook, les arguments $ function_to_remove et $ priority doivent correspondre lors de l'ajout du hook. Cela vaut pour les deux filtres et actions. Aucun avertissement ne sera donné en cas d'échec de la suppression.

J'ai inclus mon instruction if pour n'exécuter l'action que sur des identifiants de publication spécifiques, pensant que cela pourrait être utile.

6
James Jackson

Commencez par vérifier si le plug-in que vous souhaitez supprimer ne dispose pas d'un menu d'options dans lequel vous définissez les pages à exclure.

Deuxièmement, recherchez vos crochets d’action de plug-in pour ex: 

add_action('wp_head', 'easy_fancybox', 999);

Ceci est un exemple tiré du plugin easy fancybox qui se raccorde à l’en-tête wordpress. Pour le supprimer, j'ai placé cette fonction dans votre functions.php et avant que toute instance de wp_head(); soit appelée:

function remove_easy_fancybox() {

     remove_action('wp_head', 'easy_fancybox_enqueue_styles');
     remove_action('wp_head', 'easy_fancybox_enqueue_scripts');
     remove_action('wp_head', 'easy_fancybox');

     wp_dequeue_script( 'jquery.fancybox' );
     wp_dequeue_script( 'jquery.easing' );
     wp_dequeue_script( 'jquery.mousewheel' );
     wp_dequeue_script( 'jquery.metadata' );
}

add_action('wp_head', 'remove_easy_fancybox', 1);
5
numediaweb

vous pouvez maintenant utiliser le plugin gratuit Freesoul Deactivate Plugins pour désactiver des plugins spécifiques sur des pages, publications, publications personnalisées et archives spécifiques, la page des paramètres est vraiment simple

0
Beppe