WordPress carica automaticamente uno script emoji chiamato wp-emoji-release.min.js su ogni pagina del tuo sito. Questo script è stato introdotto in WordPress 4.2 per garantire che i caratteri emoji venissero visualizzati correttamente nei browser più vecchi come Internet Explorer 10 e nelle prime versioni di Android. Funziona rilevando se il browser del visitatore può renderizzare nativamente le emoji. In caso contrario, lo script sostituisce i caratteri emoji con immagini dal CDN di WordPress su s.w.org.
Il problema è che questo script viene caricato su ogni pagina, indipendentemente dal fatto che i tuoi contenuti contengano effettivamente emoji. Per la stragrande maggioranza dei siti WordPress, è un sovraccarico inutile.
Perché WordPress carica ancora questo script per impostazione predefinita
WordPress dà priorità alla retrocompatibilità più che a quasi qualsiasi altra cosa. Poiché esiste ancora un piccolo numero di utenti su browser molto vecchi, il team principale mantiene questa funzionalità abilitata per impostazione predefinita. Lo script consiste in due parti: un blocco JavaScript inline che esegue un test di rendering delle emoji e il file esterno wp-emoji-release.min.js che viene caricato se il test determina che il browser ha bisogno di aiuto. In aggiunta, WordPress include stili CSS per il rendering delle emoji e un suggerimento DNS-prefetch per s.w.org per accelerare la connessione al CDN.
L'impatto reale sulle prestazioni
Sebbene lo script emoji stesso sia di circa 15-20 KB, il costo totale è superiore alla sola dimensione del file. Ecco cosa accade a ogni visualizzazione di pagina quando lo script emoji è attivo:
- Esecuzione JavaScript inline: il test di rilevamento emoji viene eseguito nella sezione
<head>, il che blocca il rendering. Il browser deve eseguire questo codice prima di poter continuare ad analizzare il resto della pagina. - Ricerca DNS aggiuntiva: il DNS-prefetch per
s.w.orgattiva una risoluzione DNS che altrimenti non sarebbe necessaria. Su connessioni mobili ad alta latenza, questo può costare 50-100 ms. - Richiesta HTTP aggiuntiva: se il browser "fallisce" il test emoji (cosa rara sui dispositivi moderni), il file di script completo viene scaricato dal CDN.
- Sovraccarico CSS: stili aggiuntivi relativi alle emoji vengono iniettati sia nel frontend che nell'area di amministrazione.
Per i siti focalizzati sulle prestazioni e su buoni punteggi Core Web Vitals, rimuovere questo script è uno dei guadagni più semplici. Riduce il tempo totale di blocco ed elimina richieste di rete non necessarie.
Chi ha effettivamente bisogno dello script emoji
Dovresti mantenere lo script emoji se il tuo sito si rivolge specificamente a utenti con browser molto vecchi (IE 10 o precedenti, Android 4.3 o inferiore) e i tuoi contenuti dipendono fortemente dalla visualizzazione delle emoji. In pratica, questo riguarda quasi nessuno. Ogni browser moderno rilasciato dal 2015 gestisce nativamente le emoji tramite il rendering dei font del sistema operativo. Anche senza lo script di WordPress, le emoji vengono visualizzate correttamente per oltre il 99% dei tuoi visitatori.
Rimuovere lo script emoji tramite functions.php
Il modo più pulito per disabilitare lo script emoji è aggiungere il seguente codice al file functions.php del tuo tema o, meglio ancora, a un plugin specifico del sito. Ogni riga si rivolge a una parte specifica del sistema emoji:
/**
* Disable WordPress emoji scripts and styles
*/
function disable_emojis() {
// Remove the inline emoji detection script from the frontend head
remove_action('wp_head', 'print_emoji_detection_script', 7);
// Remove the emoji detection script from the admin area
remove_action('admin_print_scripts', 'print_emoji_detection_script');
// Remove emoji CSS styles from the frontend
remove_action('wp_print_styles', 'print_emoji_styles');
// Remove emoji CSS styles from the admin area
remove_action('admin_print_styles', 'print_emoji_styles');
// Stop converting emoji in RSS feed content
remove_filter('the_content_feed', 'wp_staticize_emoji');
// Stop converting emoji in RSS comment text
remove_filter('comment_text_rss', 'wp_staticize_emoji');
// Stop converting emoji in outgoing emails
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
// Remove the DNS prefetch for the emoji CDN
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);
// Prevent the emoji script from loading via the block editor
add_filter('emoji_svg_url', '__return_false');
}
add_action('init', 'disable_emojis');Alternativa: usa un plugin
Se preferisci non modificare direttamente il codice, esistono diversi plugin leggeri che gestiscono questo per te. Le opzioni più popolari sono:
- Disable Emojis (SUSPENDED): è stata la soluzione preferita per anni. Ingombro molto ridotto, fa esattamente quello che fa il codice sopra. Nota: questo plugin è stato rimosso dal repository plugin di WordPress, ma esistono alternative.
- Autoptimize: un plugin di ottimizzazione generale con un'opzione per rimuovere gli script emoji nelle impostazioni della scheda "Extra". Se utilizzi già Autoptimize per l'ottimizzazione CSS/JS, questo è un approccio all-in-one comodo.
- Plugin di prestazioni: molti plugin di caching e prestazioni come WP Rocket, LiteSpeed Cache e Perfmatters includono un interruttore per disabilitare lo script emoji. Controlla le impostazioni dei tuoi plugin esistenti prima di installare qualcosa di nuovo.
Cosa succede alla visualizzazione delle emoji dopo la rimozione
Nulla di grave. I browser moderni utilizzano il font emoji integrato del sistema operativo per renderizzare i caratteri emoji. Su Windows è il font Segoe UI Emoji. Su macOS e iOS è Apple Color Emoji. Su Android è Noto Color Emoji. Questi font di sistema gestiscono tutte le emoji Unicode standard senza l'aiuto di WordPress.
L'unica differenza visibile che potresti notare è che le emoji appariranno leggermente diverse a seconda del sistema operativo del visitatore. Un utente Apple vedrà emoji in stile Apple, un utente Windows vedrà emoji in stile Microsoft e così via. Questo è il comportamento predefinito su tutto il web e non è specifico di WordPress.
Come verificare che lo script sia scomparso
Dopo aver aggiunto il codice o attivato un plugin, dovresti confermare che lo script emoji non venga più caricato. Ecco tre modi per verificarlo:
- Visualizza sorgente pagina: apri il tuo sito in un browser, fai clic con il pulsante destro del mouse e seleziona "Visualizza sorgente pagina". Cerca
wp-emoji. Se non trovi risultati, lo script è stato rimosso con successo. - DevTools del browser: apri la scheda Rete negli strumenti per sviluppatori del tuo browser, ricarica la pagina e filtra per "emoji". Dovresti vedere zero richieste relative agli script emoji.
- Scansione InspectWP: esegui una nuova scansione InspectWP del tuo sito. La sezione WordPress segnala se lo script emoji è ancora presente. Se la rimozione è andata a buon fine, l'indicatore dello script emoji non apparirà più nel report.