Si estás leyendo esto, probablemente estés cansado del consejo estándar de rendimiento de WordPress. La rutina habitual—instalar WP Rocket, agregar un plugin optimizador de imágenes e incluir un gestor de activos—a menudo lleva a una paradoja: instalas plugins para acelerar tu sitio, pero los plugins mismos añaden hinchazón a la base de datos, trabajos 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 del metal—el servidor, la base de datos y el código central.
En esta guía, vamos a omitir por completo el ecosistema de plugins. Optimizaremos WordPress usando configuraciones del lado del servidor, wp-config.php ajustes, y quirúrgicos functions.php fragmentos.
1. La base del lado del servidor (Sin necesidad de PHP)
Antes de tocar una sola línea de código de WordPress, tu entorno de servidor debe estar fuertemente optimizado. Un servidor débil no puede arreglarse con caché del front-end.
Actualiza a PHP 8.1+
WordPress funciona con PHP. Pasar de PHP 7.4 a PHP 8.1 u 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 mediante CLI si gestionas tu propio VPS.
Habilitar compresión a nivel de servidor (Brotli sobre Gzip)
Mientras que Gzip es estándar, Brotli (desarrollado por Google) proporciona aproximadamente un 15-20% mejores ratios de compresión para archivos de texto (HTML, CSS, JS) con el mismo costo de CPU. Acción (Nginx): Asegúrate de que tu nginx.conf tiene Brotli habilitado:
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;
Implementar Caché FastCGI (Nginx) o LiteSpeed Cache
En lugar de usar un plugin de caché basado en PHP (que aún requiere que WordPress se cargue parcialmente para servir la caché), almacena en caché a nivel del servidor web. La caché FastCGI de Nginx almacena el HTML generado en RAM o en 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 tu sala de control. Por defecto, WordPress permite ciertos comportamientos que inflan tu base de datos con el tiempo.
Agrega estos fragmentos justo antes de la /* That's all, stop editing! Happy publishing. */ línea.
Limitar las revisiones de entradas
Por defecto, WordPress almacena infinitas revisiones de tus entradas. Una entrada actualizada 50 veces tendrá 50 copias en tu 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 autoguardado
WordPress autoguarda cada 60 segundos. Si tienes varios editores trabajando, esto golpea la base de datos. Redúcelo.
// 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. Reduce esto para mantener la base de datos ágil.
// Empty trash every 7 days
define( 'EMPTY_TRASH_DAYS', 7 );
3. El “Anti-Inflado” 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 tu y por defecto.
Para obtener la máxima ventaja informativa sobre los competidores, no solo te diremos que “uses un plugin de desinflado”. Aquí está el código exacto para eliminar quirúrgicamente la hinchazón más común de WordPress.
Nota: Agrega esto al functions.php o un mu-plugin drop-in.
/**
* 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 agregar el código anterior, has 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 (El camino difícil)
Plugins como Smush o Imagify son convenientes, pero ejecutan el procesamiento de imágenes en tu servidor PHP, consumiendo recursos de CPU.
Conversión manual a WebP/AVIF
Antes de subir cualquier imagen a WordPress, pásala por un compresor externo sin pérdida como Squoosh.app (de Google) o TinyPNG. Mejor aún, conviértelas a .webp o .avif formatos localmente antes de subirlas.
Aprovechar la carga diferida nativa
Desde WordPress 5.5, la carga diferida nativa está integrada. WordPress agrega automáticamente loading="lazy" a tus imágenes. No necesitas un plugin de carga diferida basado en JavaScript. Sin embargo, asegúrate de que tus imágenes “sobre el pliegue” (como tu logo o imagen principal) NO tengan este atributo, ya que retrasará el Largest Contentful Paint (LCP).
Puedes 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 tener un botón de “Limpiar base de datos”. Puedes hacer esto de forma nativa a nivel de base de datos.
- Inicia sesión en tu panel de hosting y abre phpMyAdmin.
- Selecciona tu base de datos de WordPress.
- Desplázate hasta el final, marca Seleccionar todo.
- En el desplegable “Con seleccionado:”, elige 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.
Transfiere la carga de trabajo al servidor (PHP 8.1+, Nginx FastCGI), impón disciplina en tu wp-config.php, y elimina la hinchazón del núcleo usando tu functions.php. Tu Time to First Byte (TTFB) y Core Web Vitals reflejarán la diferencia.



