🎉 USE O CUPOM FIM.DE.SEMANA.FULL | 20% OFF acima de R$ 100,00

Como corrigir o erro ao desativar emojis no Perfmatters no WordPress

Time Full Services Time Full Services
Tipo Performance & Velocidade
Nome do erro Emojis nao desativam pelo Perfmatters EN: Perfmatters Disable Emojis not working
Severidade Informativo
Descrição O erro ao usar o Perfmatters disable emojis ocorre quando outro plugin de cache serve um HTML antigo, um plugin de terceiros reenfileira o emoji do WordPress ou o tema usa caracteres emoji que dependiam do script removido, fazendo o wp-emoji-release.min.js voltar a aparecer ou os emojis renderizarem errado.

O que é erro ao desativar emojis no Perfmatters?

A opção Perfmatters disable emojis fica na aba General das configurações do plugin e remove o suporte de emoji que o WordPress carrega por padrão em todas as páginas. Quando ativada, ela desenfileira o script wp-emoji-release.min.js (gerado pelos ganchos print_emoji_detection_script e print_emoji_styles), remove a entrada de DNS prefetch para s.w.org no cabeçalho e tira o plugin wpemoji do TinyMCE no editor classico. O objetivo e eliminar uma requisicao de JavaScript e CSS que a maioria dos sites não precisa, já que navegadores e sistemas modernos renderizam emoji nativamente.

O problema aparece de duas formas. Na primeira, a opção esta marcada mas o wp-emoji-release.min.js continua aparecendo no código fonte da página: quase sempre e cache servindo uma versão antiga do HTML, ou um plugin de terceiros que reenfileira o script depois do Perfmatters. Na segunda, os emojis que antes funcionavam passam a aparecer como caixas vazias ou caracteres quebrados em navegadores ou dispositivos antigos que dependiam do polyfill do WordPress para exibir os simbolos.

Como identificar

  • O wp-emoji-release.min.js ainda aparece no código fonte (Ctrl+U) da página mesmo com a opção Disable Emojis marcada no Perfmatters.
  • A linha de DNS prefetch para ‘s.w.org’ continua no cabeçalho HTML do site depois de salvar a configuração.
  • Emojis que antes apareciam normais passam a ser exibidos como caixas vazias ou pontos de interrogacao em navegadores e sistemas antigos.
  • O auditor do PageSpeed Insights ou GTmetrix ainda lista a requisicao do script de emoji como recurso a remover.
  • Após marcar Disable Emojis, um plugin de terceiros volta a injetar o script de emoji apenas em páginas especificas, como páginas de produto.
Antes de começar: Antes de editar o functions.php ou desativar plugins em producao, faca um backup do site (arquivos e banco de dados) ou teste primeiro em um ambiente de staging, para reverter caso a edição quebre alguma função ou cause erro fatal no tema.

Como prevenir

  • Deixe apenas um plugin responsável por desativar emojis: se o Perfmatters cuida disso, desligue a mesma opção no WP Rocket ou em outros plugins de performance para evitar que um reverta o outro.
  • Sempre limpe o cache do plugin e da CDN depois de mudar qualquer configuração do Perfmatters, para que o novo HTML seja gerado e servido aos visitantes.
  • Evite colar caracteres emoji diretamente no conteúdo de posts e páginas se parte do público usa navegadores ou sistemas antigos, pois sem o polyfill do WordPress eles podem não renderizar.
  • Documente quais otimizacoes do Perfmatters estão ativas para que ajustes futuros de outro plugin não entrem em conflito com a remoção de emoji sem ninguem perceber.

Causa

  • Um plugin de cache (WP Rocket, LiteSpeed Cache, W3 Total Cache) esta servindo o HTML gerado antes de ativar o Disable Emojis, entao a página em cache ainda contem o wp-emoji-release.min.js até a limpeza do cache.
  • Um plugin de terceiros reenfileira o suporte de emoji com prioridade mais alta depois do Perfmatters: ele readiciona os ganchos print_emoji_detection_script e print_emoji_styles que o Perfmatters havia removido.
  • O conteúdo do post usa caracteres emoji digitados diretamente e o site e acessado em um navegador ou sistema operacional antigo que dependia do polyfill wp-emoji para renderizar esses simbolos, agora removido.
  • Outro plugin de performance (como o WP Rocket) também tem a própria opção de remover emoji ativada, e a ordem de execução dos dois faz um reverter o efeito do outro de forma intermitente.
  • Uma camada de cache de página no servidor ou na CDN (Cloudflare, Nginx FastCGI) mantem o HTML antigo na borda, mostrando o script de emoji mesmo após a limpeza do cache do plugin no WordPress.

Como resolver

  1. Confirme que a opção Disable Emojis esta marcada: Abra as configurações do Perfmatters e confirme que a opção Disable Emojis esta ativada na aba General. Salve novamente para garantir que a configuração foi gravada.
    Painel WP -> Configurações -> Perfmatters -> aba General
    Marque a opção 'Disable Emojis'
    Clique em 'Save Changes'
  2. Limpe todos os caches: Como a página antiga em cache ainda contem o script de emoji, limpe o cache do plugin de cache, da CDN e do navegador. Em seguida recarregue a página com Ctrl+F5 e confira o código fonte novamente.
    Limpe o cache do seu plugin (ex.: WP Rocket -> Limpar cache)
    Purgue o cache da CDN (ex.: Cloudflare -> Caching -> Purge Everything)
    Recarregue a página com Ctrl+F5 e abra o código fonte com Ctrl+U
  3. Verifique se o script de emoji ainda esta no HTML: No código fonte da página, procure por wp-emoji-release.min.js. Se ele ainda aparecer mesmo depois de limpar o cache, outro plugin esta reenfileirando o emoji e você precisa identifica-lo no próximo passo.
    No código fonte (Ctrl+U), use Ctrl+F e busque por 'wp-emoji-release.min.js'
    Busque também por 'dns-prefetch' e 's.w.org' no cabeçalho
  4. Isole o plugin que reenfileira o emoji: Desative os outros plugins de performance e de funcionalidade um a um, recarregando a página sem cache a cada teste, até o script de emoji sumir. O último plugin desativado antes do script sumir e o responsável pelo reenfileiramento.
    Painel WP -> Plugins -> desative os demais plugins um a um
    Após cada desativacao, limpe o cache e recarregue com Ctrl+F5
    Quando o script sumir, reative os plugins e mantenha apenas o Perfmatters cuidando do emoji
  5. Force a remoção do emoji pelo functions.php se o conflito persistir: Se um plugin insistir em reenfileirar o emoji, adicione o snippet de remoção no functions.php do tema filho, que roda na inicializacao e remove os ganchos de emoji do WordPress de forma definitiva.
    Acesse o tema filho via Aparencia -> Editor de Arquivos do Tema ou por FTP
    Adicione o snippet do bloco de código ao final do functions.php
    Salve, limpe o cache e confirme que o script de emoji sumiu do HTML
PHP
<?php
// Remove o suporte de emoji do WordPress de forma definitiva.
// Use no functions.php do tema filho quando um plugin reenfileira o emoji.
add_action( 'init', 'full_remover_emojis_wp' );
function full_remover_emojis_wp() {
    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' );
    // Remove o plugin de emoji do editor TinyMCE.
    add_filter( 'tiny_mce_plugins', 'full_remover_tinymce_emoji' );
    // Remove a DNS prefetch para s.w.org do cabecalho.
    add_filter( 'wp_resource_hints', 'full_remover_emoji_dns_prefetch', 10, 2 );
}
function full_remover_tinymce_emoji( $plugins ) {
    if ( is_array( $plugins ) ) {
        return array_diff( $plugins, array( 'wpemoji' ) );
    }
    return array();
}
function full_remover_emoji_dns_prefetch( $urls, $relation_type ) {
    if ( 'dns-prefetch' === $relation_type ) {
        $emoji_svg = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/' );
        $urls = array_filter( $urls, function( $url ) use ( $emoji_svg ) {
            return strpos( (string) $url, $emoji_svg ) === false;
        } );
    }
    return $urls;
}

Perguntas frequentes

Por que o wp-emoji-release.min.js ainda carrega com o Perfmatters disable emojis ativo
Na maioria dos casos e cache servindo uma versão antiga do HTML, gerada antes de você ativar a opção. Limpe o cache do plugin, da CDN e do navegador e recarregue com Ctrl+F5. Se o script persistir, outro plugin esta reenfileirando o emoji e precisa ser identificado.
O que a opção Disable Emojis do Perfmatters remove exatamente
Ela desenfileira o script wp-emoji-release.min.js que o WordPress carrega por padrão, remove a entrada de DNS prefetch para s.w.org do cabeçalho e tira o plugin de emoji do editor classico TinyMCE. O objetivo e eliminar uma requisicao de JavaScript e CSS desnecessaria na maioria dos sites.
Desativar emojis no Perfmatters prejudica meu SEO ou os emojis do conteúdo
Não prejudica o SEO; ao contrario, remove uma requisicao a menos e tende a melhorar a velocidade. Os emojis digitados no conteúdo continuam renderizando nativamente em navegadores e sistemas modernos, sem precisar do script do WordPress.
Meus emojis viraram caixas vazias depois de ativar o Disable Emojis
Isso acontece em navegadores ou sistemas operacionais antigos que dependiam do polyfill wp-emoji para exibir os simbolos. Sistemas modernos renderizam emoji nativamente. Se boa parte do seu público usa dispositivos antigos, considere manter o suporte de emoji ativo.
O Perfmatters e o WP Rocket podem entrar em conflito ao desativar emoji
Sim, se os dois tiverem a opção de remover emoji ativada ao mesmo tempo, a ordem de execução pode fazer um reverter o efeito do outro de forma intermitente. Mantenha a remoção de emoji ativa em apenas um dos plugins.
Como confirmo que os emojis foram realmente desativados
Abra o código fonte da página com Ctrl+U e busque por wp-emoji-release.min.js e por s.w.org. Se nenhum dos dois aparecer no HTML depois de limpar o cache, o suporte de emoji do WordPress foi removido com sucesso.
Preciso de código para desativar emojis ou a opção do plugin basta
A opção do Perfmatters basta na maioria dos sites. So recorra ao snippet no functions.php quando um plugin de terceiros insistir em reenfileirar o emoji depois do Perfmatters e você não puder desativa-lo.
A DNS prefetch para s.w.org continua no cabeçalho mesmo com a opção ativa
Geralmente e cache da página ou da CDN mantendo o cabeçalho antigo. Purgue todos os caches e recarregue sem cache. Se a linha de dns-prefetch para s.w.org persistir, verifique se outro plugin esta adicionando esse recurso de preconexao.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes