Como limpar o header do WordPress (RSS, emojis, generator)

Como limpar o header do WordPress (RSS, emojis, generator)

Última verificação: 22 de setembro de 2026
9 min de leitura
Guia
Desenvolvedor full-stack

Abra o código-fonte da sua página (Ctrl+U / Cmd+Option+U). Olhe para a secção <head>. Vê dezenas de linhas que não reconhece? Em 2026 a maior parte é desnecessária: manifests legados, feeds de comentários, polyfills de emoji e a meta generator da era do Windows Live Writer.

Isto não é cosmética. Cada <link> a mais e cada script extra custam bytes, tempo de parsing e, por vezes, um DNS lookup. Numa loja WooCommerce com dezenas de plugins as tags acumulam-se depressa. Um wp_head() limpo facilita o debug e reduz a superfície de ataque via fuga de versão.

Referências úteis: wp_head(), o WordPress Developer Handbook e o guia web.dev sobre LCP.

#O que o WordPress coloca no head por defeito

Uma instalação fresca com tema padrão costuma entregar, entre outras coisas:

  • Links RSS para posts, categorias, tags e comentários
  • wlwmanifest para Windows Live Writer
  • Really Simple Discovery (rsd_link)
  • meta name="generator" com a versão do core
  • Script de deteção de emoji mais estilos
  • Tags de shortlink (?p=123)
  • Links de posts adjacentes (rel="prev" / rel="next")
  • Links de discovery REST e oEmbed
ElementoUtilidade em 2026Risco ao remover
Feed de comentáriosMuito baixaBaixo
Feed principal /feed/Média (newsletter, leitores)Médio
wlwmanifest / RSDLegadoBaixo
Meta generatorNenhuma (fuga de info)Baixo
Script de emojiNativo nos browsersBaixo
Discovery RESTAlta em headless / appAlto se usa API
ShortlinkBaixaBaixo

A tabela é a base de decisão: não arranque tudo, remova legado e fugas, mantenha a API de propósito.

#Porque limpar o head?

#Performance

Antes da limpeza vê muitas vezes 10 a 20 tags extra e um pedido a s.w.org para emoji. Depois, o HTML encolhe, o parser trabalha menos e no Network tab desaparecem os requests supérfluos. Em redes móveis portuguesas (4G em comboio, 5G instável em zonas urbanas densas) a diferença nota-se mais do que no Wi-Fi do escritório.

#Segurança e fuga de informação

meta name="generator" content="WordPress x.y.z" revela a versão do core. Não é um exploit por si, mas é um convite a scanners para cruzar CVE conhecidas. O mesmo vale para query strings de versão no CSS do tema. Remova a generator; continue a patchar core, temas e plugins.

#Manutenção

Um head magro torna diffs de staging legíveis. Quando um plugin injeta de repente três prefetch hints, vê-o de imediato. Em auditorias a PME portuguesas, «head limpo» é muitas vezes o primeiro ganho rápido antes de Redis ou object cache.

#Como remover o feed RSS de comentários no WordPress

O WordPress gera um feed RSS separado para cada post, categoria, tag e comentários. Se não gere um site de notícias onde alguém subscreve threads via leitor RSS, é desperdício.

// Remove links RSS para comentários
add_filter( 'feed_links_show_comments_feed', '__return_false' );

// Remove feeds extra (categorias, tags, autores)
remove_action( 'wp_head', 'feed_links_extra', 3 );

// Só se realmente não precisares do feed principal:
// remove_action( 'wp_head', 'feed_links', 2 );

Deixe feed_links se o Mailchimp, o Brevo ou um setup de podcast lê o feed do site. Feeds de comentários e feeds extra pode, em regra, desligar em sites empresariais.

#Remover wlwmanifest e RSD do WordPress

Quando foi a última vez que usou o Windows Live Writer para escrever no blog? O WordPress ainda adiciona o manifest. O Really Simple Discovery era para remote publishing e é irrelevante nos workflows modernos.

remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'rsd_link' ); // Really Simple Discovery

Isto remove tipicamente:

  • <link rel="wlwmanifest" type="application/wlwmanifest+xml" ...>
  • <link rel="EditURI" type="application/rsd+xml" ...>

#Como desativar os emojis do WordPress

O WordPress carrega JS e CSS para converter caracteres como :) em imagens. Os browsers modernos têm suporte nativo a emoji. O script é só um pedido HTTP extra mais DNS prefetch para s.w.org.

remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
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' );

Se a redação usa muito emoji em e-mail e a vista no Outlook é crítica, teste os filtros de mail um a um. Para performance de frontend bastam os hooks de wp_head e de estilos.

#Esconder a versão do WordPress na meta generator

Por razões de segurança não deve expor a versão no frontend.

remove_action( 'wp_head', 'wp_generator' );
add_filter( 'the_generator', '__return_empty_string' );

Isto também silencia tags generator nos feeds. Não substitui atualizações: core, temas e plugins continuam a precisar de patch. Só remove o cartaz na porta da frente.

Shortlinks (?p=123) e rel="prev" / rel="next" no head raramente são úteis para crawlers modernos. Inflam o HTML.

remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
remove_action( 'template_redirect', 'wp_shortlink_header', 11 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
// Remove só se o frontend não precisar de discovery:
// remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
// remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
// remove_action( 'template_redirect', 'rest_output_link_header', 11 );

Setups headless, apps móveis e muitos page builders esperam discovery REST. Num blog empresarial clássico com pouco uso de API pode remover as links. Em WordPress headless com Next.js ou Astro no frontend, deixe-as ficar.

#Código completo para limpar o wp_head

Prefira um must-use plugin em wp-content/mu-plugins/wppoland-clean-head.php em vez de meter tudo só no functions.php do tema pai.

<?php
/**
 * Plugin Name: WPPoland Clean Head
 * Description: Remove tags legadas de wp_head.
 * Author: wppoland.com
 */

function wppoland_cleanup_head() {
	remove_action( 'wp_head', 'rsd_link' );
	remove_action( 'wp_head', 'wlwmanifest_link' );
	remove_action( 'wp_head', 'wp_generator' );
	remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
	remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
	remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
	remove_action( 'wp_head', 'index_rel_link' );
	remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
	remove_action( 'wp_head', 'feed_links_extra', 3 );
	remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
	remove_action( 'wp_print_styles', 'print_emoji_styles' );

	add_filter( 'feed_links_show_comments_feed', '__return_false' );
	add_filter( 'the_generator', '__return_empty_string' );
}
add_action( 'init', 'wppoland_cleanup_head' );

#Limpar o head só em certas páginas

Por vezes quer manter feeds só na homepage:

add_action( 'wp', function () {
	if ( ! is_front_page() ) {
		remove_action( 'wp_head', 'feed_links', 2 );
	}
} );

Ou matar emojis só no frontend e deixá-los no admin. Lógica condicional mantém o snippet sustentável, em vez de empilhar cinco plugins de cleanup sobrepostos.

#Como verificar se o head ficou limpo

  1. Abra janela anónima e verifique o código-fonte: generator, wlwmanifest e script de emoji desapareceram?
  2. Separador Network: nenhum pedido a wp-emoji-release.min.js.
  3. O feed principal /feed/ continua acessível se for necessário.
  4. Editor Gutenberg e chamadas REST (guardar post) continuam verdes.
  5. Checkout WooCommerce passa sem regressão se a loja estiver ativa.

Em projetos portugueses com CSP estrita vê muitas vezes menos ruído na consola depois da limpeza, porque o CDN de emoji e os prefetch hints desaparecem. É um efeito colateral, não substitui uma política CSP real.

#Que tags do head do WordPress manter

  • viewport e meta charset (tema)
  • Canonical e hreflang (plugin SEO / tema)
  • Preloads críticos que definiu de propósito
  • Scripts de cookies e consentimento (obrigação legal)
  • Schema / application/ld+json quando os usa

Limpar o head significa legado fora, não «apagar tudo o que é invisível».

#Limpeza do head com cache e Cloudflare

Limpeza de head e full-page cache reforçam-se. Menos tags significam menos HTML na edge. Esvazie a cache de HTML depois do deploy (não só o browser), senão continua a ver a linha antiga da generator. Com Cloudflare ou um host com Varnish: mantenha as cache keys de forma a que utilizadores autenticados não misturem output de cleanup com visitantes anónimos.

Plugin cleaner e MU-plugin ao mesmo tempo é redundante. Escolha uma fonte de verdade. Em auditorias a agências em Lisboa e Porto vemos muitas vezes três plugins de cleanup mais código no tema: o plugin A remove links REST, o plugin B volta a adicioná-los por causa do oEmbed, e ninguém sabe porque o head cresce outra vez.

#Checklist antes de publicar a limpeza do head

  1. Espelhe staging com os plugins de produção (não só o tema padrão).
  2. Compare código-fonte da homepage, de um post e, se existir, de uma página de loja.
  3. Teste o URL do feed à mão num reader se o marketing o usar.
  4. Um editor guarda um post Gutenberg sem erros REST.
  5. Monitorização: anote o tamanho HTML de / antes e depois da limpeza (diff simples no ticket).

Estes cinco passos levam menos de uma hora e evitam a regressão típica «matámos os emojis e a newsletter morreu». Em lojas com Multibanco, MB Way ou Stripe no checkout: clique no pagamento em staging depois de mudanças no head, para garantir que nenhum script de terceiros foi removido por acidente. Registe bytes de HTML antes e depois no ticket de deploy; assim tem prova quando alguém perguntar se o ganho valeu o risco. Repita a mesma verificação depois de cada update de plugin de cache.

#Ajuda com a velocidade do WordPress e Core Web Vitals

Se quiser tratar head-bloat, scripts de terceiros e Core Web Vitals em conjunto, contacta-nos via página de contacto. Mais sobre velocidade: otimização de velocidade WordPress.

Próximo passo

Transforme o artigo numa implementação real

Este bloco reforça a ligação interna e conduz o leitor para o passo seguinte mais útil dentro da arquitetura do site.

Quer implementar isto no seu site?

Se o problema está nos Core Web Vitals, no rendering lento ou no peso do WordPress, posso mapear e implementar a otimização.

Cluster relacionado

Explorar outros serviços WordPress e base de conhecimento

Reforce o seu negócio com suporte técnico profissional em áreas-chave do ecossistema WordPress.

FAQ do artigo

Perguntas frequentes

Respostas práticas para aplicar o tema na execução real.

SEO-readyGEO-readyAEO-ready3 Q&A
Posso remover feed_links completamente?#
Só se ninguém precisar do feed principal. Muitas newsletters e setups de podcast leem /feed/. Feeds de comentários e feeds extra podem, em regra, ser desligados.
A limpeza do head estraga o Gutenberg?#
Não, desde que não desative a REST API nem hooks de admin. Os snippets desta guia tocam no wp_head do frontend, não no wp-admin.
Onde deve viver o snippet?#
No functions.php de um child theme, ou melhor num must-use plugin pequeno, para que uma troca de tema não apague a limpeza.

Precisa de FAQ adaptado ao setor e mercado? Criamos uma versão alinhada com os seus objetivos de negócio.

Fale connosco

Artigos Relacionados