Cómo optimizar WordPress para mayor velocidad sin plugins (La guía solo con código)

Publicado el | Por
6 min de lectura

Si estás leyendo esto, probablemente estés cansado de los consejos estándar de rendimiento de WordPress. La rutina habitual (instalar WP Rocket, añadir un plugin de optimización de imágenes y un gestor de activos) a menudo conduce a una paradoja: instalas plugins para acelerar tu sitio, pero los plugins en sí mismos añaden peso a la base de datos, tareas cron en segundo plano y sus propias cargas de CSS/JS.

La verdad es que WordPress no necesita 15 plugins de rendimiento para cargar en menos de un segundo. La verdadera optimización de velocidad ocurre en la capa base: el servidor, la base de datos y el código central.

En esta guía, vamos a evitar el ecosistema de plugins por completo. Optimizaremos WordPress usando configuraciones del lado del servidor, wp-config.php ajustes y functions.php fragmentos quirúrgicos.


1. La base del lado del servidor (No requiere PHP)

Antes de tocar una sola línea de código de WordPress, tu entorno de servidor debe estar altamente optimizado. Un servidor débil no puede arreglarse con caché de front-end.

Actualiza a PHP 8.1+

WordPress funciona con PHP. Pasar de PHP 7.4 a PHP 8.1 o 8.2 puede generar una reducción del 20-30% en el tiempo de ejecución y un consumo de memoria significativamente menor. Acción: Cambia esto en tu cPanel, Plesk o vía CLI si administras tu propio VPS.

Habilita la compresión a nivel de servidor (Brotli sobre Gzip)

Aunque Gzip es el estándar, Brotli (desarrollado por Google) proporciona aproximadamente un 15-20% mejores ratios de compresión para archivos de texto (HTML, CSS, JS) al mismo costo de CPU. Acción (Nginx): Asegúrate de que tu nginx.conf tenga Brotli habilitado:

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

Implemente el almacenamiento en caché de FastCGI (Nginx) o LiteSpeed Cache

En lugar de utilizar un plugin de caché basado en PHP (que todavía requiere que WordPress se cargue parcialmente para servir la caché), almacene en caché a nivel del servidor web. El almacenamiento en caché de Nginx FastCGI guarda el HTML generado en la memoria RAM o en el disco y lo sirve directamente, evitando por completo PHP y MySQL para los visitantes anónimos.


2. Endurecimiento y adelgazamiento mediante wp-config.php

El wp-config.php archivo es su sala de control. Por defecto, WordPress permite ciertos comportamientos que inflan su base de datos con el tiempo.

Añada estos fragmentos justo antes de la /* That's all, stop editing! Happy publishing. */ línea.

Limitar las revisiones de entradas

Por defecto, WordPress almacena revisiones infinitas de sus entradas. Una entrada actualizada 50 veces tendrá 50 copias en su wp_posts tabla de base de datos, ralentizando drásticamente las consultas a la base de datos.

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

Optimizar el intervalo de guardado automático

WordPress guarda automáticamente cada 60 segundos. Si tiene varios editores trabajando, esto sobrecarga la base de datos. Reduzca la velocidad.

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

Vaciar la papelera más rápido

Las entradas y comentarios eliminados permanecen en la base de datos durante 30 días. Reduzca este tiempo para mantener la base de datos ligera.

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

3. El "Anti-Bloat" functions.php Fragmento maestro

El núcleo de WordPress inyecta una gran cantidad de scripts de soporte heredados, enlaces de descubrimiento y estilos en línea en su  y 

 por defecto.

Para lograr la máxima ganancia de información sobre la competencia, no solo le diremos que "use un plugin de limpieza". Aquí tiene el código exacto para eliminar quirúrgicamente el bloat más común de WordPress.

Nota: Añada esto al archivo de su tema hijo functions.php o a un mu-plugin independiente.

/**
 * 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;
});

¿Qué acabamos de lograr?

Al añadir el código anterior, ha eliminado instantáneamente hasta 5-8 solicitudes HTTP innecesarias y eliminado docenas de líneas de CSS/JS en línea de cada carga de página, todo sin instalar un solo plugin.


4. Optimización de medios (la forma difícil)

Plugins como Smush o Imagify son convenientes, pero ejecutan el procesamiento de imágenes en su servidor PHP, consumiendo recursos de CPU.

Conversión manual a WebP/AVIF

Antes de subir cualquier imagen a WordPress, pásela por un compresor externo sin pérdidas como Squoosh.app (de Google) o TinyPNG. Mejor aún, conviértalas a .webp o .avif formatos localmente antes de subirlas.

Aproveche la carga diferida nativa

Desde WordPress 5.5, la carga diferida nativa está integrada. WordPress añade automáticamente loading="lazy" a sus imágenes. No necesita un plugin de carga diferida basado en JavaScript. Sin embargo, asegúrese de que sus imágenes "above the fold" (como su logotipo o imagen principal) NO tengan este atributo, ya que retrasará el Largest Contentful Paint (LCP).

Puede eliminar la carga diferida para la primera imagen de una página mediante 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. Desfragmentación de la base de datos mediante phpMyAdmin

Los plugins de optimización suelen incluir un botón de "Limpiar base de datos". Puede hacer esto de forma nativa a nivel de base de datos.

  1. Inicie sesión en su panel de alojamiento y abra phpMyAdmin.
  2. Seleccione su base de datos de WordPress.
  3. Desplácese hasta la parte inferior, marque Marcar todos.
  4. En el menú desplegable "Con los seleccionados:", elija Optimizar tabla.

MySQL reconstruirá los índices de la tabla y recuperará el espacio no utilizado. Haga esto manualmente una vez al mes.


El Veredicto

Optimizar WordPress sin plugins no se trata solo de ahorrar dinero en suscripciones premium. Es una filosofía de reducir la deuda técnica. Cada plugin que no instalas es una vulnerabilidad de seguridad que no tienes que parchear, una tabla de base de datos que no tienes que limpiar y un script PHP que tu servidor no tiene que ejecutar.

Traslada la carga de trabajo al servidor (PHP 8.1+, Nginx FastCGI), impón disciplina en tu wp-config.php, y elimina el bloatware del núcleo usando tu functions.php. Tu tiempo hasta el primer byte (TTFB) y las Core Web Vitals reflejarán la diferencia.

Ajay Malik

Ajay Malik es un desarrollador de WordPress y Freelancer de Élite con más de 8 años de experiencia.