O WordPress carrega automaticamente um script de emoji chamado wp-emoji-release.min.js em todas as páginas do seu site. Esse script foi introduzido no WordPress 4.2 para garantir que caracteres de emoji fossem exibidos corretamente em navegadores antigos como o Internet Explorer 10 e versões iniciais do Android. Ele funciona detectando se o navegador do visitante consegue renderizar emojis nativamente. Se não conseguir, o script substitui os caracteres de emoji por imagens do CDN do WordPress em s.w.org.
O problema é que esse script carrega em todas as páginas, independentemente de seu conteúdo conter ou não emojis. Para a grande maioria dos sites WordPress, isso é uma sobrecarga desnecessária.
Por que o WordPress ainda carrega esse script por padrão
O WordPress prioriza a compatibilidade retroativa acima de quase tudo. Como ainda há um pequeno número de usuários em navegadores muito antigos, a equipe principal mantém esse recurso ativado por padrão. O script consiste em duas partes: um bloco de JavaScript inline que executa um teste de renderização de emoji, e o arquivo externo wp-emoji-release.min.js que é carregado se o teste determinar que o navegador precisa de ajuda. Além disso, o WordPress adiciona estilos CSS para renderização de emoji e uma dica de DNS prefetch para s.w.org para acelerar a conexão com o CDN.
O verdadeiro impacto no desempenho
Embora o próprio script de emoji tenha cerca de 15-20 KB, o custo total é maior do que apenas o tamanho do arquivo. Veja o que acontece em cada carregamento de página quando o script de emoji está ativo:
- Execução de JavaScript inline: O teste de detecção de emoji é executado na seção
<head>, que bloqueia a renderização. O navegador precisa executar esse código antes de continuar a análise do restante da página. - Consulta DNS extra: O DNS prefetch para
s.w.orgdispara uma resolução de DNS que de outra forma não seria necessária. Em conexões móveis com alta latência, isso pode custar 50-100ms. - Requisição HTTP adicional: Se o navegador "falhar" no teste de emoji (o que é raro em dispositivos modernos), o arquivo de script completo é baixado do CDN.
- Sobrecarga de CSS: Estilos extras relacionados a emoji são injetados tanto no frontend quanto na área administrativa.
Para sites focados em desempenho e bons resultados de Core Web Vitals, remover esse script é uma das vitórias mais fáceis. Reduz o tempo total de bloqueio e elimina requisições de rede desnecessárias.
Quem realmente precisa do script de emoji
Você deve manter o script de emoji se seu site tem como foco usuários em navegadores muito antigos (IE 10 ou anterior, Android 4.3 ou inferior) e se seu conteúdo depende fortemente da exibição de emojis. Na prática, isso se aplica a quase ninguém. Todos os navegadores modernos lançados desde 2015 lidam com emojis nativamente por meio da renderização de fonte do sistema operacional. Mesmo sem o script do WordPress, os emojis serão exibidos corretamente para mais de 99% dos seus visitantes.
Remova o script de emoji via functions.php
A maneira mais limpa de desativar o script de emoji é adicionar o código a seguir ao arquivo functions.php do seu tema, ou melhor ainda, a um plugin específico do site. Cada linha tem como alvo uma parte específica do sistema de 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: usar um plugin
Se preferir não editar código diretamente, vários plugins leves cuidam disso para você. As opções mais populares são:
- Disable Emojis (SUSPENSO): Foi a solução padrão por anos. Pegada muito pequena, faz exatamente o que o código acima faz. Observe que esse plugin foi removido do diretório de plugins do WordPress, mas existem alternativas.
- Autoptimize: Um plugin geral de otimização que inclui uma opção para remover scripts de emoji em sua aba de configurações "Extra". Se você já usa o Autoptimize para otimização de CSS/JS, essa é uma abordagem conveniente tudo-em-um.
- Plugins de desempenho: Muitos plugins de cache e desempenho como WP Rocket, LiteSpeed Cache e Perfmatters incluem um interruptor para desativar o script de emoji. Verifique as configurações dos plugins existentes antes de instalar algo novo.
O que acontece com a exibição de emoji após a remoção
Nada de ruim acontece. Navegadores modernos usam a fonte de emoji integrada do sistema operacional para renderizar caracteres de emoji. No Windows, é a fonte Segoe UI Emoji. No macOS e iOS, é a Apple Color Emoji. No Android, é a Noto Color Emoji. Essas fontes do sistema lidam com todos os emojis Unicode padrão sem nenhuma ajuda do WordPress.
A única diferença visual que você pode notar é que os emojis terão aparência ligeiramente diferente dependendo do sistema operacional do visitante. Um usuário Apple vê emojis no estilo Apple, um usuário Windows vê emojis no estilo Microsoft, e assim por diante. Esse é o comportamento padrão em toda a web e não é específico do WordPress.
Como verificar se o script foi removido
Após adicionar o código ou ativar um plugin, você deve confirmar que o script de emoji não está mais carregando. Aqui estão três maneiras de verificar:
- Ver código-fonte da página: Abra seu site em um navegador, clique com o botão direito e selecione "Ver código-fonte da página". Pesquise por
wp-emoji. Se nenhuma correspondência for encontrada, o script foi removido com sucesso. - DevTools do navegador: Abra a aba Rede nas ferramentas de desenvolvedor do navegador, recarregue a página e filtre por "emoji". Você deve ver zero requisições relacionadas a scripts de emoji.
- Varredura do InspectWP: Execute uma nova varredura do InspectWP em seu site. A seção WordPress informará se o script de emoji ainda está presente. Se a remoção foi bem-sucedida, o indicador do script de emoji não aparecerá mais no relatório.