WordPress charge automatiquement un script emoji appelé wp-emoji-release.min.js sur chaque page de votre site. Ce script a été introduit dans WordPress 4.2 pour garantir que les caractères emoji s'affichent correctement dans les anciens navigateurs comme Internet Explorer 10 et les premières versions d'Android. Il fonctionne en détectant si le navigateur du visiteur peut afficher les emojis nativement. S'il ne le peut pas, le script remplace les caractères emoji par des images provenant du CDN WordPress à l'adresse s.w.org.
Le problème est que ce script se charge sur chaque page, que votre contenu contienne réellement des emojis ou non. Pour la grande majorité des sites WordPress, c'est une surcharge inutile.
Pourquoi WordPress charge encore ce script par défaut
WordPress accorde une grande importance à la rétrocompatibilité, presque plus qu'à toute autre chose. Étant donné qu'il reste un petit nombre d'utilisateurs sur des navigateurs très anciens, l'équipe principale conserve cette fonctionnalité activée par défaut. Le script se compose de deux parties : un bloc JavaScript en ligne qui exécute un test de rendu des emojis, et le fichier externe wp-emoji-release.min.js qui est chargé si le test détermine que le navigateur a besoin d'aide. En plus de cela, WordPress ajoute des styles CSS pour le rendu des emojis et un indice DNS prefetch pour s.w.org afin d'accélérer la connexion au CDN.
L'impact réel sur les performances
Bien que le script emoji lui-même fasse environ 15-20 Ko, le coût total est plus élevé que la simple taille du fichier. Voici ce qui se passe à chaque chargement de page lorsque le script emoji est actif :
- Exécution de JavaScript en ligne : le test de détection des emojis s'exécute dans la section
<head>, ce qui bloque le rendu. Le navigateur doit exécuter ce code avant de pouvoir continuer à analyser le reste de la page. - Recherche DNS supplémentaire : le DNS prefetch pour
s.w.orgdéclenche une résolution DNS qui ne serait pas nécessaire autrement. Sur les connexions mobiles à latence élevée, cela peut coûter 50-100 ms. - Requête HTTP supplémentaire : si le navigateur « échoue » au test emoji (ce qui est rare sur les appareils modernes), le fichier de script complet est téléchargé depuis le CDN.
- Surcharge CSS : des styles supplémentaires liés aux emojis sont injectés à la fois dans le frontend et dans la zone d'administration.
Pour les sites axés sur la performance et de bons scores Core Web Vitals, la suppression de ce script est l'une des améliorations les plus faciles à obtenir. Elle réduit votre temps de blocage total et élimine les requêtes réseau inutiles.
Qui a réellement besoin du script emoji
Vous devriez conserver le script emoji si votre site cible spécifiquement des utilisateurs sur des navigateurs très anciens (IE 10 ou antérieur, Android 4.3 ou inférieur) et que votre contenu repose fortement sur l'affichage des emojis. En pratique, cela ne concerne presque personne. Tous les navigateurs modernes sortis depuis 2015 gèrent les emojis nativement grâce au rendu des polices du système d'exploitation. Même sans le script WordPress, les emojis s'afficheront correctement pour plus de 99 % de vos visiteurs.
Supprimer le script emoji via functions.php
La manière la plus propre de désactiver le script emoji est d'ajouter le code suivant au fichier functions.php de votre thème, ou mieux encore, à une extension spécifique au site. Chaque ligne cible une partie spécifique du système emoji :
/**
* Désactiver les scripts et styles emoji de WordPress
*/
function disable_emojis() {
// Supprimer le script de détection emoji en ligne du head frontend
remove_action('wp_head', 'print_emoji_detection_script', 7);
// Supprimer le script de détection emoji de la zone d'administration
remove_action('admin_print_scripts', 'print_emoji_detection_script');
// Supprimer les styles CSS emoji du frontend
remove_action('wp_print_styles', 'print_emoji_styles');
// Supprimer les styles CSS emoji de la zone d'administration
remove_action('admin_print_styles', 'print_emoji_styles');
// Arrêter la conversion des emojis dans le contenu du flux RSS
remove_filter('the_content_feed', 'wp_staticize_emoji');
// Arrêter la conversion des emojis dans le texte des commentaires RSS
remove_filter('comment_text_rss', 'wp_staticize_emoji');
// Arrêter la conversion des emojis dans les e-mails sortants
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
// Supprimer le DNS prefetch pour le CDN emoji
add_filter('wp_resource_hints', function($urls, $relation_type) {
if ('dns-prefetch' === $relation_type) {
$urls = array_filter($urls, function($url) {
return strpos($url, 'https://s.w.org/images/core/emoji/') === false;
});
}
return $urls;
}, 10, 2);
// Empêcher le chargement du script emoji via l'éditeur de blocs
add_filter('emoji_svg_url', '__return_false');
}
add_action('init', 'disable_emojis');Alternative : utiliser une extension
Si vous préférez ne pas modifier le code directement, plusieurs extensions légères s'en chargent pour vous. Les options les plus populaires sont :
- Disable Emojis (SUSPENDUE) : a été la solution de référence pendant des années. Très petite empreinte, fait exactement ce que fait le code ci-dessus. Notez que cette extension a été retirée du répertoire des extensions WordPress, mais des alternatives existent.
- Autoptimize : une extension d'optimisation générale qui inclut une option pour supprimer les scripts emoji sous son onglet de paramètres « Extra ». Si vous utilisez déjà Autoptimize pour l'optimisation CSS/JS, c'est une approche tout-en-un pratique.
- Extensions de performance : de nombreuses extensions de cache et de performance comme WP Rocket, LiteSpeed Cache et Perfmatters incluent une bascule pour désactiver le script emoji. Vérifiez les paramètres de vos extensions existantes avant d'en installer une nouvelle.
Que devient l'affichage des emojis après la suppression
Rien de fâcheux ne se produit. Les navigateurs modernes utilisent la police emoji intégrée au système d'exploitation pour afficher les caractères emoji. Sur Windows, c'est la police Segoe UI Emoji. Sur macOS et iOS, c'est Apple Color Emoji. Sur Android, c'est Noto Color Emoji. Ces polices système gèrent tous les emojis Unicode standard sans aucune aide de WordPress.
La seule différence visuelle que vous pourriez remarquer est que les emojis auront un aspect légèrement différent selon le système d'exploitation du visiteur. Un utilisateur Apple voit des emojis de style Apple, un utilisateur Windows voit des emojis de style Microsoft, et ainsi de suite. C'est le comportement standard sur l'ensemble du web et ce n'est pas spécifique à WordPress.
Comment vérifier que le script a disparu
Après avoir ajouté le code ou activé une extension, vous devez confirmer que le script emoji n'est plus chargé. Voici trois façons de vérifier :
- Voir le code source de la page : ouvrez votre site dans un navigateur, faites un clic droit et sélectionnez « Afficher le code source de la page ». Recherchez
wp-emoji. Si vous ne trouvez aucune correspondance, le script a été supprimé avec succès. - DevTools du navigateur : ouvrez l'onglet Réseau dans les outils de développement de votre navigateur, rechargez la page et filtrez par « emoji ». Vous devriez voir zéro requête liée aux scripts emoji.
- Analyse InspectWP : lancez une nouvelle analyse InspectWP de votre site. La section WordPress indiquera si le script emoji est toujours présent. Si la suppression a réussi, l'indicateur du script emoji n'apparaîtra plus dans le rapport.