Como otimizar o WordPress para velocidade sem plugins (O guia apenas com código)

Publicado em | Por
6 min de leitura

Se está a ler isto, provavelmente está cansado dos conselhos padrão de desempenho do WordPress. A rotina habitual — instalar o WP Rocket, adicionar um plugin de otimização de imagens e incluir um gestor de ativos — leva frequentemente a um paradoxo: instala plugins para acelerar o seu site, mas os próprios plugins adicionam excesso à base de dados, tarefas cron em segundo plano e as suas próprias cargas de CSS/JS.

A verdade é que o WordPress não precisa de 15 plugins de desempenho para carregar em menos de um segundo. A verdadeira otimização de velocidade acontece ao nível da infraestrutura — o servidor, a base de dados e o código principal.

Neste guia, vamos contornar totalmente o ecossistema de plugins. Vamos otimizar o WordPress usando configurações ao nível do servidor, wp-config.php ajustes e functions.php snippets cirúrgicos.


1. A base ao nível do servidor (Não é necessário PHP)

Antes de tocar numa única linha de código do WordPress, o seu ambiente de servidor deve estar fortemente otimizado. Um servidor fraco não pode ser corrigido por cache de front-end.

Atualize para PHP 8.1+

O WordPress funciona com PHP. Mudar do PHP 7.4 para o PHP 8.1 ou 8.2 pode resultar numa redução de 20-30% no tempo de execução e num consumo de memória significativamente menor. Ação: Altere isto no seu cPanel, Plesk ou via CLI se gerir o seu próprio VPS.

Ative a compressão ao nível do servidor (Brotli em vez de Gzip)

Embora o Gzip seja o padrão, Brotli (desenvolvido pela Google) oferece rácios de compressão cerca de 15-20% melhores para ficheiros de texto (HTML, CSS, JS) com o mesmo custo de CPU. Ação (Nginx): Certifique-se de que o seu nginx.conf tem o Brotli ativado:

brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;

Implemente o FastCGI Caching (Nginx) ou LiteSpeed Cache

Em vez de usar um plugin de cache baseado em PHP (que ainda requer que o WordPress carregue parcialmente para servir o cache), faça o cache ao nível do servidor web. O cache FastCGI do Nginx armazena o HTML gerado na RAM ou no disco e serve-o diretamente, contornando completamente o PHP e o MySQL para visitantes anónimos.


2. Endurecimento e Otimização via wp-config.php

wp-config.php ficheiro é a sua sala de controlo. Por predefinição, o WordPress permite certos comportamentos que sobrecarregam a sua base de dados ao longo do tempo.

Adicione estes snippets logo antes da linha /* That's all, stop editing! Happy publishing. */ line.

Limite as Revisões de Posts

Por predefinição, o WordPress armazena revisões infinitas dos seus posts. Um post atualizado 50 vezes terá 50 cópias na sua wp_posts tabela da base de dados, tornando as consultas à base de dados drasticamente mais lentas.

// Keep only the last 3 revisions
define( 'WP_POST_REVISIONS', 3 );

Otimize o Intervalo de Gravação Automática

O WordPress grava automaticamente a cada 60 segundos. Se tiver vários editores a trabalhar, isto sobrecarrega a base de dados. Diminua a frequência.

// Change autosave from 60 seconds to 5 minutes
define( 'AUTOSAVE_INTERVAL', 300 );

Esvazie o Lixo Mais Rapidamente

Posts e comentários eliminados permanecem na base de dados durante 30 dias. Reduza este período para manter a base de dados leve.

// Empty trash every 7 days
define( 'EMPTY_TRASH_DAYS', 7 );

3. O Snippet Mestre functions.php “Anti-Bloat”

O núcleo do WordPress injeta uma enorme quantidade de scripts de suporte legado, links de descoberta e estilos inline no seu  e 

 por predefinição.

Para obter o máximo ganho de informação em relação aos concorrentes, não lhe diremos apenas para “usar um plugin de limpeza”. Aqui está o código exato para remover cirurgicamente o inchaço mais comum do WordPress.

Nota: Adicione isto ao functions.php do seu Tema Filho ou a um mu-plugin.

/**
 * The Ultimate WordPress Debloat Snippet
 */
add_action('init', function() {
    // 1. Remove RSD, XMLRPC, and WLW links
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wlwmanifest_link');
    add_filter('xmlrpc_enabled', '__return_false');

    // 2. Remove WordPress version footprint (Security & Speed)
    remove_action('wp_head', 'wp_generator');

    // 3. Remove Shortlinks and REST API links from header
    remove_action('wp_head', 'wp_shortlink_wp_head');
    remove_action('wp_head', 'rest_output_link_wp_head');

    // 4. Disable native Emojis (Saves 1 JS and 1 CSS HTTP Request)
    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');

    // 5. Disable oEmbeds (If you don't embed external URLs automatically)
    remove_action('wp_head', 'wp_oembed_add_discovery_links');
    remove_action('wp_head', 'wp_oembed_add_host_js');
    add_action('wp_footer', function() { wp_deregister_script('wp-embed'); });
});

/**
 * 6. Remove Global Styles (WP 5.9+ Inline CSS Bloat)
 */
add_action('wp_enqueue_scripts', function() {
    wp_dequeue_style('global-styles');
    wp_dequeue_style('classic-theme-styles');
}, 100);

/**
 * 7. Remove jQuery Migrate (If using modern themes/plugins)
 */
add_action('wp_default_scripts', function($scripts) {
    if (!is_admin() && isset($scripts->registered['jquery'])) {
        $script = $scripts->registered['jquery'];
        if ($script->deps) {
            $script->deps = array_diff($script->deps, ['jquery-migrate']);
        }
    }
});

/**
 * 8. Throttle the Heartbeat API
 * Prevents high CPU usage when leaving the WP Admin open
 */
add_filter('heartbeat_settings', function($settings) {
    $settings['interval'] = 60; // Throttle to 60 seconds
    return $settings;
});

O que acabámos de alcançar?

Ao adicionar o código acima, eliminou instantaneamente até 5-8 pedidos HTTP desnecessários e removeu dezenas de linhas de CSS/JS inline de cada carregamento de página—tudo isto sem instalar um único plugin.


4. Otimização de Media (O Caminho Difícil)

Plugins como o Smush ou o Imagify são convenientes, mas processam imagens no seu servidor PHP, consumindo recursos de CPU.

Conversão Manual para WebP/AVIF

Antes de carregar qualquer imagem para o WordPress, passe-a por um compressor externo sem perdas como o Squoosh.app (da Google) ou TinyPNG. Melhor ainda, converta-as para .webp ou .avif formatos localmente antes de carregar.

Aproveite o Lazy Loading Nativo

Desde o WordPress 5.5, o lazy loading nativo está integrado. O WordPress adiciona automaticamente loading="lazy" às suas imagens. Não precisa de um plugin de lazy loading baseado em JavaScript. No entanto, certifique-se de que as suas imagens “acima da dobra” (como o seu logótipo ou imagem de destaque) NÃO têm este atributo, pois atrasará o Largest Contentful Paint (LCP).

Pode remover o lazy loading da primeira imagem de uma página via functions.php:

add_filter( 'wp_get_attachment_image_attributes', function( $attr, $attachment, $size ) {
    static $is_first_image = true;
    if ( $is_first_image ) {
        $attr['loading'] = 'eager'; // Force immediate load for LCP
        $is_first_image = false;
    }
    return $attr;
}, 10, 3 );

5. Desfragmentação da Base de Dados via phpMyAdmin

Os plugins de otimização geralmente possuem um botão “Limpar Base de Dados”. Pode fazer isto nativamente ao nível da base de dados.

  1. Inicie sessão no painel do seu alojamento e abra o phpMyAdmin.
  2. Selecione a sua base de dados WordPress.
  3. Desça até ao fundo, selecione Marcar todos.
  4. No menu pendente “Com selecionados:”, escolha Otimizar tabela.

O MySQL reconstruirá os índices da tabela e recuperará o espaço não utilizado. Faça isto manualmente uma vez por mês.


O Veredito

Otimizar o WordPress sem plugins não se trata apenas de poupar dinheiro em subscrições premium. É uma filosofia de redução de dívida técnica. Cada plugin que não instala é uma vulnerabilidade de segurança que não tem de corrigir, uma tabela de base de dados que não tem de limpar e um script PHP que o seu servidor não tem de executar.

Transfira a carga de trabalho para o servidor (PHP 8.1+, Nginx FastCGI), imponha disciplina no seu wp-config.php, e elimine o inchaço do núcleo usando o seu functions.php. O seu Time to First Byte (TTFB) e os Core Web Vitals refletirão a diferença.

Partilhar este artigo

Ajay Malik

Ajay Malik é um programador WordPress e Freelancer de Elite com mais de 8 anos de experiência.