O WordPress é uma ferramenta poderosa, mas a sua filosofia de “um tamanho serve para todos” significa que muitas vezes traz excessos que a maioria dos projetos modernos não necessita. Ao longo dos anos, aperfeiçoei um conjunto específico de snippets para eliminar o supérfluo sem comprometer a experiência principal.
Este guia não é apenas uma lista de itens para apagar; é uma abordagem estratégica ao desempenho. Foi inspirado pela excelente lista de Terence Eden, à qual juntei as minhas próprias soluções testadas em ambiente de produção.
Porquê fazer debloat ao WordPress?
Porquê preocupar-se com alguns scripts pequenos? Porque eles acumulam-se. Cada linha desnecessária é um conflito potencial, um micro-atraso na renderização ou largura de banda desperdiçada.
O que estamos a visar:
- Tamanho do DOM – Eliminar estilos inline não utilizados.
- Overhead de HTTP – Desativar scripts que não deveriam estar lá.
- Superfície de Segurança – Desativar protocolos legados como o XML-RPC.
- Core Web Vitals – Impacto direto no LCP e CLS ao remover elementos que bloqueiam a renderização.
[!IMPORTANT] Use de cautela: Nem todo o “bloat” é inútil. Se depende do estilo específico do editor clássico ou se os seus utilizadores usam navegadores muito antigos que requerem scripts de emoji, alguns destes ajustes podem não ser adequados para si. Teste sempre primeiro em ambiente de testes (staging).
O script completo de debloat
Adicione o seguinte ao ficheiro functions.php do seu tema. Cada secção está comentada com explicações e links para fontes.
1. Remover estilos do classic theme
O WordPress adiciona “classic-theme-styles” mesmo em temas personalizados. Remova-os:
// Remover classic theme obrigatório.
function disable_classic_theme_styles() {
wp_deregister_style( "classic-theme-styles" );
wp_dequeue_style( "classic-theme-styles" );
}
add_action( "wp_enqueue_scripts", "disable_classic_theme_styles" );
2. Remover suporte a emoji
O WordPress converte emojis de texto em imagens e adiciona scripts de deteção. Se os seus visitantes têm suporte a emoji (o que todos os navegadores modernos têm), isto é desnecessário:
// Remover WP Emoji.
// https://www.denisbouquet.com/remove-wordpress-emoji-code/
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" );
// https://wordpress.org/support/topic/remove-the-new-dns-prefetch-code/
add_filter( "emoji_svg_url", "__return_false" );
// Parar substituição de emoji com imagens em RSS / Atom Feeds
// https://danq.me/2023/09/04/wordpress-stop-emoji-images/
remove_filter( "the_content_feed", "wp_staticize_emoji" );
remove_filter( "comment_text_rss", "wp_staticize_emoji" );
3. Desativar formatação automática de texto
O WordPress “texturiza” o seu conteúdo, convertendo aspas retas em curvas, hífens duplos em travessões, etc. Isto pode quebrar exemplos de código:
// Remover formatação automática.
// https://css-tricks.com/snippets/wordpress/disable-automatic-formatting/
remove_filter( "the_content", "wptexturize" );
remove_filter( "the_excerpt", "wptexturize" );
remove_filter( "comment_text", "wptexturize" );
remove_filter( "the_title", "wptexturize" );
// Mais formatação.
add_action("init", function() {
remove_filter( "the_content", "convert_smilies", 20 );
foreach ( array( "the_content", "the_title", "wp_title", "document_title" ) as $filter ) {
remove_filter( $filter, "capital_P_dangit", 11 );
}
remove_filter( "comment_text", "capital_P_dangit", 31 );
remove_filter( "the_content", "do_blocks", 9 );
}, 11);
Nota: O filtro
capital_P_dangité a forma do WordPress auto-corrigir “WordPress” para “WordPress”. É agressivo e frequentemente indesejado.
4. Remover estilos e scripts do Gutenberg
Se está a usar um tema personalizado e não depende dos estilos frontend do Gutenberg, remova-os:
// Remover Estilos do Gutenberg.
// https://wordpress.org/support/topic/how-to-disable-inline-styling-style-idglobal-styles-inline-css/
remove_action( "wp_enqueue_scripts", "wp_enqueue_global_styles" );
// Remover widgets de edição do Gutenberg.
// De https://wordpress.org/plugins/classic-widgets/
add_filter( "gutenberg_use_widgets_block_editor", "__return_false" );
add_filter( "use_widgets_block_editor", "__return_false" );
// Remover CSS da Block Library do Gutenberg do carregamento no frontend.
// https://smartwp.com/remove-gutenberg-css/
function remove_wp_block_library_css() {
wp_dequeue_style( "wp-block-library" );
wp_dequeue_style( "wp-block-library-theme" );
wp_dequeue_style( "wp-components" );
}
add_action( "wp_enqueue_scripts", "remove_wp_block_library_css", 100 );
5. Remover meta tags do header
Limpe a sua secção <head> removendo meta tags desnecessárias:
// Remover shortlink.
// https://stackoverflow.com/questions/42444063/disable-wordpress-short-links
remove_action( "wp_head", "wp_shortlink_wp_head" );
// Remover RSD.
// https://wpengineer.com/1438/wordpress-header/
remove_action( "wp_head", "rsd_link" );
// Remover links de feed extra.
// https://developer.wordpress.org/reference/functions/feed_links/
add_filter( "feed_links_show_comments_feed", "__return_false" );
add_filter( "feed_links_show_posts_feed", "__return_false" );
// Remover link api.w.org.
// https://wordpress.stackexchange.com/questions/211467/remove-json-api-links-in-header-html
remove_action( "wp_head", "rest_output_link_wp_head" );
remove_action( "template_redirect", "rest_output_link_header", 11, 0 );
6. Remover melhorias de imagem
O WordPress adiciona atributos sizes e outras melhorias às imagens. Se gere estas por conta própria, remova-as:
// Remover tamanho de imagem forçado do WordPress
// https://core.trac.wordpress.org/ticket/62413#comment:40
add_filter( "wp_img_tag_add_auto_sizes", "__return_false" );
// Remover melhorias de <img>
// https://developer.wordpress.org/reference/functions/wp_filter_content_tags/
remove_filter( "the_content", "wp_filter_content_tags", 12 );
// Parar reescrita de URLs http:// para o domínio principal.
remove_filter( "the_content", "wp_replace_insecure_home_url", 10 );
// Remover coisas de attachment
remove_filter( "the_content", "prepend_attachment" );
// Remover filtro de blocos
remove_filter( "the_content", "apply_block_hooks_to_content_from_post_object", 8 );
7. Remover verificação de browser e outras funcionalidades de admin
// Remover verificação de browser do painel de Admin.
if ( !empty( $_SERVER["HTTP_USER_AGENT"] ) ) {
add_filter( "pre_site_transient_browser_" . md5( $_SERVER["HTTP_USER_AGENT"] ), "__return_null" );
}
// Remover hovercards nos links de comentários na área de admin.
add_filter( "akismet_enable_mshots", "__return_false" );
As minhas recomendações adicionais
Para além das técnicas acima, aqui estão as minhas próprias soluções para otimização adicional:
8. Desativar XML-RPC
Se não usa aplicações externas para publicar no WordPress, desative o XML-RPC para melhor segurança:
// Desativar XML-RPC completamente
add_filter( 'xmlrpc_enabled', '__return_false' );
// Remover link XML-RPC do head
remove_action( 'wp_head', 'rsd_link' );
9. Remover jquery migrate
Temas e plugins modernos do WordPress raramente precisam do jQuery Migrate. Se o seu site funciona sem ele, remova-o:
function remove_jquery_migrate( $scripts ) {
if ( ! is_admin() && isset( $scripts->registered['jquery'] ) ) {
$script = $scripts->registered['jquery'];
if ( $script->deps ) {
$script->deps = array_diff( $script->deps, array( 'jquery-migrate' ) );
}
}
}
add_action( 'wp_default_scripts', 'remove_jquery_migrate' );
10. Desativar oembed
Se não incorpora conteúdo de outros sites (YouTube, Twitter, etc.), desative o oEmbed:
// Remover links de descoberta oEmbed
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
// Remover endpoint da REST API do oEmbed
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
// Desativar auto-descoberta oEmbed
add_filter( 'embed_oembed_discover', '__return_false' );
11. Adiar carregamento de javascript
Adicione defer a scripts não-críticos para melhor desempenho:
function add_defer_attribute( $tag, $handle ) {
// Scripts que NÃO devem ser adiados
$scripts_to_not_defer = array( 'jquery-core' );
if ( in_array( $handle, $scripts_to_not_defer ) ) {
return $tag;
}
return str_replace( ' src', ' defer src', $tag );
}
add_filter( 'script_loader_tag', 'add_defer_attribute', 10, 2 );
Medir o impacto
Após implementar estas alterações, teste o seu site usando:
- Google PageSpeed Insights – Verifique os Core Web Vitals
- GTmetrix – Análise detalhada em cascata
- WebPageTest – Múltiplas localizações de teste e velocidades de ligação
Deverá ver:
- Tamanho de página reduzido (menos bytes de CSS/JS)
- Menos pedidos HTTP
- Melhor Time to First Byte (TTFB)
- Melhor Largest Contentful Paint (LCP)
Conclusão
A abordagem “baterias incluídas” do WordPress é ótima para iniciantes, mas os programadores que procuram desempenho máximo precisam de cortar a gordura. As técnicas neste guia, inspiradas pelo excelente script de debloat de Terence Eden, vão ajudá-lo a alcançar uma instalação WordPress mais leve e rápida.
Lembre-se: menos é mais. Cada linha de código que remove é um potencial ponto de falha a menos, um byte a menos para descarregar, e um passo mais perto de uma pontuação PageSpeed perfeita.



