O WordPress é uma ferramenta poderosa, mas a sua filosofia de “um tamanho serve para todos” significa que muitas vezes traz excessos qué 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 útilizados.
- 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 sé os seus útilizadores 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
Adicioné o seguinté 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 themé 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 suporté a emoji
O WordPress converte emojis de texto em imagens é adiciona scripts de deteção. Sé os seus visitantes têm suporté 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 travéssõ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
Limpé 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 é 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 dé 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 é outras funcionalidades dé 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 dé 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, desativé 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. Sé 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 dé outros sites (YouTube, Twitter, etc.), desativé 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, testé o seu site usando:
- Google PageSpeed Insights – Verifiqué 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 byté a menos para descarregar, é um passo mais perto dé uma pontuação PageSpeed perfeita.
Exploré os nossos desenvolvimento profissional WordPress para levar o seu projeto mais longe.

