# Emojis, oEmbed, Dashicons : retirer les assets inutiles chargés par le cœur

> WordPress charge par défaut un script d'emojis, une détection oEmbed et parfois Dashicons en front. Voici comment les retirer proprement, avec la mesure du gain.

- Auteur : Clément Hadrot
- Publié le : 2020-12-16
- Mis à jour le : 2020-12-16
- Catégorie : Performance
- URL : https://wpmoderne.dev.wordpress-developpement.fr/performance/emojis-oembed-dashicons-retirer-assets-inutiles/

## L’essentiel

- wp-emoji-release.min.js pèse pour rien sur un navigateur récent
- oEmbed reste utile en admin, rarement nécessaire en front
- Dashicons ne doit jamais se charger hors de l'admin

Problème : un audit Lighthouse pointait trois requêtes superflues sur un site vitrine WordPress fraîchement livré, alors qu'aucune extension tierce n'était en cause. En creusant, les trois venaient du cœur de WordPress lui-même : le script de détection des emojis, une balise de découverte oEmbed, et la feuille de style Dashicons chargée jusque sur le front. Aucun de ces trois éléments n'est utile sur la majorité des sites modernes, dont les visiteurs utilisent des navigateurs qui gèrent nativement les emojis Unicode.

## Snippet commenté : couper le script d'emojis

Le script `wp-emoji-release.min.js` existait pour convertir les emojis en images sur les navigateurs anciens qui ne les affichaient pas correctement. Sur le parc de navigateurs actuel, ce cas est devenu marginal. Le désactiver se fait proprement via les hooks dédiés, sans toucher au cœur :

```
function wpm_disable_emojis() {
    remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
    remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    remove_action( 'wp_print_styles', 'print_emoji_styles' );
    remove_action( 'admin_print_styles', 'print_emoji_styles' );
    remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
    remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
    remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
}
add_action( 'init', 'wpm_disable_emojis' );
```

## Variante : couper aussi le DNS-prefetch résiduel

Même après avoir retiré le script, WordPress ajoute par défaut une indication `dns-prefetch` vers `s.w.org`, le domaine qui hébergeait les ressources d'emojis. Ce résidu se retire avec un filtre dédié :

```
function wpm_remove_emoji_dns_prefetch( $urls, $relation_type ) {
    if ( 'dns-prefetch' === $relation_type ) {
        $urls = array_diff( $urls, array( '//s.w.org' ) );
    }
    return $urls;
}
add_filter( 'wp_resource_hints', 'wpm_remove_emoji_dns_prefetch', 10, 2 );
```

> L'essentiel à retenir : wp-emoji-release.min.js pèse pour rien sur un navigateur récent ; oEmbed reste utile en admin, rarement nécessaire en front ; Dashicons ne doit jamais se charger hors de l'admin

## Snippet commenté : limiter oEmbed au strict nécessaire

oEmbed permet à WordPress de générer automatiquement un aperçu enrichi lorsqu'on colle une URL YouTube ou Twitter dans un article. Cette fonctionnalité reste utile en rédaction, mais deux de ses effets de bord alourdissent le front sans bénéfice pour le visiteur : la balise de découverte oEmbed dans le head, et le script `wp-embed.min.js` qui permet à un site tiers d'intégrer vos propres contenus.

```
function wpm_disable_oembed_front() {
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
    remove_action( 'wp_head', 'wp_oembed_add_host_js' );
}
add_action( 'init', 'wpm_disable_oembed_front' );
```

Attention à ne pas désactiver la fonctionnalité d'intégration entrante (celle qui affiche une vidéo YouTube collée dans votre contenu) : les deux hooks ci-dessus ne touchent que la découverte sortante, la génération d'aperçus dans vos articles continue de fonctionner normalement.

## Snippet commenté : Dashicons hors de l'admin

Dashicons est la police d'icônes de l'administration WordPress. Certains thèmes et extensions la chargent par erreur sur le front, alors qu'elle n'y sert souvent à rien. La retirer, uniquement en dehors de l'admin et de la barre d'outils si elle n'est pas utilisée :

```
function wpm_remove_dashicons_front() {
    if ( ! is_admin() && ! is_admin_bar_showing() ) {
        wp_deregister_style( 'dashicons' );
    }
}
add_action( 'wp_enqueue_scripts', 'wpm_remove_dashicons_front', 100 );
```

Vérifiez au préalable qu'aucun élément visible du thème n'utilise une classe `dashicons-*` avant de retirer cette feuille : c'est la cause la plus fréquente d'icônes qui disparaissent après ce type de nettoyage.

## Checklist avant mise en production

- Vérifier qu'aucun email transactionnel n'utilise d'emoji dans son contenu (sinon, garder `wp_staticize_emoji_for_email` actif).
- Confirmer qu'aucun article existant ne dépend d'une intégration oEmbed pour s'afficher correctement.
- Contrôler visuellement les icônes du thème après la désactivation de Dashicons en front.
- Mesurer le nombre de requêtes avant/après avec l'onglet réseau des outils de développement.

> Retirer trois requêtes ne transforme pas un site lent en site rapide, mais un audit propre commence toujours par le ménage du superflu.

## En résumé

Ces trois nettoyages ne demandent aucune extension supplémentaire, quelques lignes dans le fichier de fonctions du thème suffisent. Le gain individuel est modeste, mais cumulé à d'autres optimisations, il contribue à un score Lighthouse plus propre et à une page légèrement plus rapide à interpréter pour le navigateur.
