En souhaitant installer l’extension Nivo Slider sur WordPress, j’ai du faire face à un problème de conflit entre extensions.

En effet, ce plugin installé en parallèle de Custom Contact Form ne fonctionne pas correctement. Il s’est avéré que ce dernier plugin empêche Nivo Slider de fonctionner correctement à cause, il semblerait, d’un conflit d’utilisation de jQuery par les extensions.

Il est bien évidemment impensable d’aller modifier le code source des extensions, qui sera de toutes façons remplacé à chaque mise à jour. Ce qui m’amène à vous parler de comment peut-on désactiver une extension sur certaines pages sans la désactiver complètement depuis le panel d’administration?

Trouver d’où vient le problème

Avant de désactiver un plugin, il faut savoir que chaque extension contient un certain nombre de fichiers. Le fichier principal possède une liste d’ordres utilisés par WordPress pour inclure dans vos pages ce qu’il faut pour l’utilisation de l’extension.

Vous trouverez parmi ces ordres des lignes comme:

wp_enqueue_script('ccf', plugins_url() . '/ccf/js/ccf.js', '1.2');
// ou encore
wp_enqueue_style('ccf');

C’est avec ces ordres que WordPress inclut automatiquement scripts et feuilles de style dans votre page. Ces ordres peuvent facilement être ignorés à l’aide de quelques lignes de code dans le fichier functions.php de votre thème:

// Désactivation des scripts
add_action( 'wp_print_scripts', 'disable_scripts_function', 100 );
function disable_scripts_function() {
	// Pour désactiver par exemple le chargement d'un script sur la home page
	if ( is_home() ) {
		// my-extension-script-1 correspond au code utilisé dans la fonction wp_enqueue_script
		wp_deregister_script( 'my-extension-script-1' );
		wp_deregister_script( 'my-extension-script-2' );
		wp_deregister_script( '...' );
	}
}
// Désactivation des feuilles de style
add_action( 'wp_print_styles', 'disable_styles_function', 100 );
function disable_styles_function() {
	// Pour désactiver par exemple le chargement d'un style sur la home page
	if ( is_home() ) {
		// my-extension-style-1 correspond au code utilisé dans la fonction wp_enqueue_style
		wp_deregister_style( 'my-extension-style-1' );
		wp_deregister_style( 'my-extension-style-2' );
		wp_deregister_style( '...' );
	}
}