Ajouter les attributs Defer et Async aux scripts WordPress

Defer Async scripts dans WordPress
WordPress Lecture 4 minutes • 23 février 2021

Les développeurs WordPress chargent souvent les scripts JS de façon incorrecte ou plutôt non optimale.
Bien souvent cette habitude a été prise car WordPress ne disposait pas jusqu'alors d'un moyen simple d'ajouter les nouveaux attributs Async et Defer.

Si vous ne savez pas comment bien charger les scripts JS dans WordPress, voici la bonne méthode avec wp_enqueue_script.

Depuis la version 4.1, un nouveau filtre "script_loader_tag" est supporté nativement par WordPress afin d'ajouter plus simplement les attributs async et defer sans prise de tête.

apply_filters('script_loader_tag', string $tag, string $handle, string $src);

Utilisation concrète : Async/Defer avec WordPress

Async sur un Script

function add_async_attribute($tag, $handle) {
  if ( 'nom-script-js' !== $handle )
    return $tag;
  return str_replace( ' src', ' async="async" src', $tag );
}

add_filter('script_loader_tag', 'add_async_attribute', 10, 2);

Defer sur un Script

Si vous souhaitez utiliser l'attribut "defer", remplacez simplement async="async" par defer="defer", comme dans l'exemple suivant :

function add_defer_attribute($tag, $handle) {
  if ( 'nom-script-js' !== $handle )
    return $tag;
  return str_replace( ' src', ' defer="defer" src', $tag );
}

add_filter('script_loader_tag', 'add_defer_attribute', 10, 2);

Ajoutez ce code à votre fichier functions.php de préférence.

Vous devrez recopier le "handle" qui est le premier paramètre de la méthode de chargement de votre script. Dans l'exemple suivant, il s'agit de 'nom-script-js'. C'est valable pour les méthodes wp_register_script et pour wp_enqueue_script.

wp_register_script('nom-script-js', $src, $deps, $ver, $in_footer);
//OU
wp_enqueue_script('nom-script-js', $src, $deps, $ver, $in_footer);

Quel attribut choisir ?

Le bon choix de balise à utiliser dépend entièrement de la nature du script lui-même, et il existe trois choix possibles.

  • Standard - C'est à dire sans l'attribut async ou defer. Cela constitue le comportement standard de votre navigateur.
  • Defer - Que l'on peut traduire par différé. Cela retarde l'exécution du script jusqu'à ce que l'analyse HTML soit terminée.
  • Async - Que l'on peut traduire par asynchrone. Le script s'exécute une fois qu'il est prêt et ne perturbe pas l'analyse HTML.

Comme toujours, vous devez tester toutes les modifications que vous apportez. Si vous constatez que des erreurs sont associées à l'un ou l'autre de ces attributs, ne les utilisez pas pour ce script particulier.

Utiliser Async et Defer sur plusieurs Scripts

Pour ajouter la balise async / defer à plusieurs scripts, nous devons créer un tableau (array), puis parcourir ce tableau et ajouter la balise async / defer à chaque script.

Ajoutez l'un de ces exemples de code à votre thème, dans le fichier "functions.php" et modifiez le tableau (array) pour inclure les scripts que vous avez choisi.

Plusieurs Scripts avec Async

function add_async_attribute($tag, $handle) {
  // ajouter les handles de mes scripts au array ci-dessous. Ici 3 scripts par exemple.
  $scripts_to_async = array('nom-script-1', 'nom-script-2', 'nom-script-3' );
  foreach($scripts_to_async as $async_script) {
    if ($async_script === $handle) {
      return str_replace(' src', ' async="async" src', $tag);
    }
  }
  return $tag;
}

add_filter('script_loader_tag', 'add_async_attribute', 10, 2);

Plusieurs Scripts avec Defer

function add_defer_attribute($tag, $handle) {
  // ajouter les handles de mes scripts au array ci-dessous. Ici 3 scripts par exemple.
  $scripts_to_defer = array('nom-script-1', 'nom-script-2', 'nom-script-3' );
  foreach($scripts_to_defer as $defer_script) {
    if ($defer_script === $handle) {
      return str_replace(' src', ' defer="defer" src', $tag);
    }
  }
  return $tag;
}

add_filter('script_loader_tag', 'add_defer_attribute', 10, 2);

La solution de l'Extension WordPress

Si vous n'êtes pas à l'aise avec les manipulations précédentes, il existe une Extension WordPress qui gère cela très bien nommée Async Javascript.


Si cet article vous a aidé, lâchez votre plus bel applaudissement en remerciement ! 🤗


Avis clients

Tibow Webdesign

Tous les avis

Julie Deshayes Aout 2022

Google Avis
Thibaut a aidé mon club de ski nautique à apparaître sur internet , il est d’une rapidité et d’une efficacité extraordinaire, je vous recommande

Centre Emile Durkheim - www.centreemiledurkheim.fr Avril 2022

Google Avis
Nous avons fait appel à Thibaut pour la refonte de notre site web. nous sommes très contents de sa prestation, tant sur le plan humain que technique. Thibaut s'est rendu disponible. Il a su être à l'écoute, à su s'adapter à nos besoins spécifiques, a été force de propositions. C'est un réel plaisir de travailler avec Thibaut, nous ferons appel de nouveau à lui les yeux fermés.

Nicolas Bourvic 25 février 2022

Consultant junior agence Le Ciré Jaune
Consultant en agence de communication, j'ai à plusieurs reprises fait appel à Thibaut pour la réalisation de sites internet (à ce jour 4). Professionnalisme, réactivité et une vraie compréhension du besoin client définit Thibaut.
Vous pouvez vous fier à son expertise, il saura répondre à vos questions les plus techniques. De plus, Thibaut n'est pas qu'un exécutant mais est force de proposition et construit une relation bienveillante et respectueuse, ce qui est déterminant pour la bonne réalisation d'un projet.

Je recommande vivement et je continuerai à faire appel à Thibaut.

Charlotte Devillers 25 février 2022

Digital Marketing Manager at dydu
Pour la gestion de notre site web, nous sommes passés d'une agence à Thibaut et nous ne regrettons pas notre décision ! Thibaut est un véritable couteau suisse : c'est un expert en dév, webdesign, web marketing… La complémentarité de toutes ces compétences font que Thibaut comprend rapidement nos objectifs marketing et commerciaux, proposant ainsi des conseils et un accompagnement précieux. En plus de ses compétences techniques multiples, Thibaut est très à l'écoute, réactive, proactif, très bon communicant… Vous pouvez lui faire confiance les yeux fermés ! Merci Thibaut pour ton professionnalisme et ton expertise, c'est un réel plaisir de travailler avec toi.

Philippe Carne - Hocklines.fr 16/02/2022

Google Avis
Un professionnel à votre écoute.

Pour notre asso sportive, nous avions besoin de revisiter notre site.
Tibow Webdesign a su nous accompagner du début à la fin de ce projet.

Une écoute active, une recherche de solutions, une connaissance des outils, de la réactivité, de l'adaptation, des conseils généraux sur la communication... Voilà pour l'essentiel des choses que Thibaut a su nous transmettre.

Nous en sommes au début... Mais le nouveau site a été vite adopté par notre public. Et de bonnes stats sont au rendez vous.

Aurore Grand 17 janvier 2022

Google Avis
J'ai vu un commentaire de Thibault sur une extension WordPress, qui ne fonctionnait pas sur mon site. Je l'ai donc contacté pour savoir si il pouvait m'aider. En moins d'une heure, il m'a répondu et il m'a gentiment aider. Un grand merci.

Charlotte Séjourné - Wildust.com 10 septembre 2021

Google Avis
Thibaut est une personne super disponible et très pro.
Chaque projet confié a été géré avec beaucoup de professionnalisme et pas mal de pédagogie pour les néophytes comme moi! C'est super appréciable.

Maud Rochais Photographe 26 août 2021

Google Avis
Thibault a répondu a mes attentes ! Il est à l'écoute et a su cerner rapidement ce que je voulais en terme de site. Le résultat est parfait ! Merci à toi !

Loïc Perrière 6 janvier 2021

Ingénieur de recherches - CNRS / Recommandation LinkedIn
Lors du démarrage de projet de refonte du site web de mon laboratoire, j’ai contacté Thibaut pour obtenir des renseignements sur un travail qu’il avait déjà réalisé auprès d’un autre client.
Sa franchise et la clarté de ses réponses m’ont finalement convaincu de lui confier la conception de deux sites internet. Nos échanges ont toujours été constructifs, et Thibaut a fait preuve, tout au long du développement, de dynamisme et de réactivité, et a également réalisé de nombreuses propositions qui ont majoritairement été retenues. Enfin, il a su faire preuve d’écoute pour intégrer les problématiques et les demandes spécifiques d’un site internet de laboratoire public pour créer un site à notre image.
La collaboration a été fructueuse et constructive, et ça a été un réel plaisir de travailler avec lui.

Clara Deleuze 21 décembre 2020

Principal Chief Executive Officer chez On Divorce / Recommandation LinkedIn
Je collabore avec Thibault depuis plus de 10 ans.
Plus qu'un dev Full Stack c'est un profil au sens logique qui sera vous accompagner plus globalement sur votre projet IT.
Je lui ai confié plus de 5 projets et vous le recommande vivement : réactivité, sens du détail, proactivité...Il sait s'adapter "au métier" pour lequel il intervient et pas uniquement à la fonctionnalité !
Lire plus