Désactiver les scripts et les styles des extensions !

Les extensions disponibles dans la bibliothèque officielle de WordPress sont pour la plupart très bien conçus et disposent de fonctionnalités avancées. Souvent, ils utilisent des fichiers externes de type JavaScript, mais également des feuilles de styles. Ces éléments sont chargés, pour la plupart, automatiquement sur la totalité des pages de votre blog WordPress. Notons que certaines extensions chargent uniquement les contenus dynamiques proposé par leurs services seulement dans les pages articles (single.php/singular()) de votre blog. Cela optimise considérablement le chargement de votre page d’accueil puisque les fichiers inutiles ne seront pas chargés.
[popeye exclude= »9510″] Il n’existe malheureusement (pour le moment) aucune extension permettant de renseigner ou de désactiver les fonctions d’ajout automatique des extensions. L’extension créée, si cela est possible, pourrai facilement lister les autres extensions installées, en recherchant alors dans les fichiers, de types « .php » des dossiers les possibles fonctions « wp_enqueue_(script/style)« . En effet, elles utilisent cette fonctionnalité pour ajouter du contenu dynamique.

En attendant cette petite extension, nous vous proposons de les désactiver manuellement, via le fichier « functions.php » de votre thème WordPress. Nous vous rappelons que l’utilité de cette fonction permet tout simplement de garder le contrôle des fichiers chargés par les extensions de votre blog. Nous utilisons également les « marqueurs conditionnels » pour optimisé ce chargement. Tout d’abord, repérez les fonctions « wp_enqueue_script » ou « wp_enqueue_style » qui se trouvent dans les fichiers « .php » de vos extensions.

Les scripts

Nous avons alors une fonction de ce type, contenant l’attribut de l’extension à supprimer. Dans cet exemple, nous avons l’extension « Contact Form 7 » avec l’attribut « contact-form-7 » à supprimer (attribut présent dans le « wp_enqueue_script » du fichier principal de l’extension)

[php]
wp_enqueue_script( ‘contact-form-7’);
[/php]

Pour supprimer, correctement les scripts des extensions utilisés, il vous suffit de coller le code suivant dans le fichier « functions.php » de votre thème WordPress, suivi de l’attribut présent dans la balise « wp_enqueue »

[php]
add_action( ‘wp_print_scripts’, ‘my_deregister_javascript’, 100 );

function my_deregister_javascript() {
if ( !is_single() ) {
wp_deregister_script( ‘contact-form-7’ );
}
}
[/php]

Pour supprimer plusieurs scripts en une seule fonction, il vous suffit de dupliquer la ligne « wp_deregister_script( ‘ ‘ ); ». Comme ceci.

[php]
add_action( ‘wp_print_scripts’, ‘my_deregister_javascript’, 100 );

function my_deregister_javascript() {
if ( !is_single() ) {
wp_deregister_script( ‘contact-form-7’ );
wp_deregister_script( ‘popeye’ );
}
}

[/php]

Les styles

Pour finir et pour supprimer correctement les styles des extensions utilisés, il vous suffit de coller le code suivant dans le fichier « functions.php » de votre thème WordPress avec l’attribut présent dans la fonction « wp_enqueue »

[php]
add_action( ‘wp_print_styles’, ‘my_deregister_styles’, 100 );

function my_deregister_styles() {
if ( !is_single() ) {
wp_deregister_style( ‘popeye-base’);
}
}
[/php]

Pour en supprimer plusieurs à la fois, il vous suffit de dupliquer la ligne « wp_deregister_script(  » ); ». Comme ceci.

[php]
add_action( ‘wp_print_styles’, ‘my_deregister_styles’, 100 );

function my_deregister_styles() {
if ( !is_single() ) {
wp_deregister_style( ‘popeye-base’);
wp_deregister_style( ‘popeye-style’);
}
}
[/php]

Notes

Comme vous le voyez, nous avons utilisé un marqueur conditionnel « is_single« . Celui-ci permet de filtrer la suppression des styles et scripts. En effet, avec ce marqueur, il est plutôt simple d’attribuer le chargement de fichiers sur les pages de votre choix. Les éléments sont alors chargés sur les pages « articles » de votre blog. Vous pouvez voir bien évidemment utiliser d’autres marqueurs. Nous en avons fait la liste dans cet article. Si vous le souhaitez, vous pouvez également attribuer plusieurs marqueurs aux fonctions précédemment présentés.

[php]
add_action( ‘wp_print_styles’, ‘my_deregister_styles’, 100 );

function my_deregister_styles() {
if ( !(is_home() || is_single() ) ) {
wp_deregister_style( ‘attribut’);
wp_deregister_style( ‘autre-attribut’);
}
}
[/php]

Désactiver les scripts et les styles des extensions !

Allez plus loins

5 réponses

  1. Pas mal ce petit hack pour réduire les temps de chargement :)

    Par contre, il a quelques extensions qui permettent de désactiver la feuille de style ou le javascript via les paramètres du plugin donc ce hack est inutile pour celles-ci alors regardez d’abord si cette option est dispo avant d’appliquer ce hack ;)

  2. Bonjour
    Merci, mais ce hack déjà bien ancien n’est plus valide dans 80% des cas : la plupart des plugin (dont celui cité en exemple, d’ailleurs) n’utilisent plus le wp_enqueue et s’inscrustent systématiquement en wp_head.

  3. @Crunch :
    Oui cette options devrai être disponible pour toutes les extensions, mais ce n’est pas le cas. C’est bien dommage.

    @School :
    La fonction est utilise lorsqu’il n’y a pas d’option pour le désactiver sois-même.
    Il y en a encore qui utilise cette solution (wp_enqueue)

  4. merci+++ mais attention avec les scripts! la désactivation de l’attribut jquery d’une colorbox ou lightbox ou etc. va désactiver le jquery de manière générale :-/ et… c’est pas top d’avoir son admin de tout bloquer ;-)

  5. + wp_deregister_script fait sauter Smush.it + bugger l’upload des images :/ pourquoi? je n’en sais rien du tout… mais depuis que j’ai viré les 4 lignes de mon functions.php, tout re-fonctionne comme avant :)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *