A estas alturas, es probable que te hayas topado con innumerables artículos sobre optimizaciones del rendimiento de WordPress, muchos de ellos con los mismos consejos de siempre. Puede ser frustrante tropezar continuamente con las mismas recomendaciones ineficaces sin hacer ningún progreso.
Si te sientes abrumado y sin opciones, los siguientes pasos pueden proporcionarte una salida. Se trata de las mismas estrategias que aplicamos por defecto en todos los sitios que alojamos, abarcando nuestro enfoque integral de la optimización del rendimiento. Aunque profundizamos en los aspectos específicos de nuestra infraestructura, estos principios pueden adaptarse a prácticamente cualquier entorno de alojamiento.
Una regla que solemos seguir es que no es necesario empezar optimizando las cosas. Por ejemplo, en el caso de Google Fonts, si tienes que hacer tanto trabajo para que funcionen, quizá deberías plantearte si realmente las necesitas.
Con este espíritu, empezaremos por desactivar varias funciones de WordPress que encierran su verdadero potencial.
0. Reinicio de WordPress:
1. Desactivar WP Cron.
WordPress no dispone de un cron propiamente dicho, como el que tienes en tu servidor Linux, sino que utiliza una función que se activa cada vez que se produce una incidencia en el servidor web.
Una solución mucho mejor es utilizar un servicio externo para activar el cron de su instalación de WordPress. Aquí en Raybeam usamos el increíble cron-job.org disparando trabajos cada 5 minutos. Los procesos activados por cron pueden necesitar algún tiempo para concluir, por lo que debe haber un espacio razonable entre ellos.
La desactivación de WP Cron se realiza insertando la siguiente constante en wp-config.php file:
define( 'DISABLE_WP_CRON', true );
Es importante comprobar si tu cron externo se está ejecutando realmente y un buen plugin para hacerlo es Registrador Cron.
2. Desactivar o limitar las revisiones posteriores
Post Revisions guarda cada cambio que haces en cada entrada de tu WordPress, y esto puede acumularse claramente en tu base de datos. Ajústalo a un valor con el que puedas trabajar cómodamente o desactívalo con la siguiente constante en wp-config.php file:
define( 'WP_POST_REVISIONS', '0' );
También puede establecer revisiones ilimitadas con “-1” y configurarlos -con la ayuda de un plugin- para que se eliminen automáticamente después de un tiempo determinado, algo de lo que hablaremos más adelante.
3. Desactivar Trackbacks y Pingbacks
Los Pingbacks son una molestia y crean un desorden innecesario en su instalación. Puede desactivarlos en la configuración de Discusión del Dashboard y también añadiendo el siguiente código a un archivo funciones.php en su tema o un mu-plugin personalizado para desactivar los auto pingbacks:
function wpsites_disable_self_pingbacks( &$links ) {
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, get_option( 'home' ) ) )
unset($links[$l]);
}
add_action( 'pre_ping', 'wpsites_disable_self_pingbacks' );
4. Desactivar Capital P
Existe un curioso -por no decir otra cosa- filtro en WordPress que impide escribir la palabra WordPress without a capital P, like so: WordPress
Puede eliminarlo con la siguiente función:
remove_filter( 'el_contenido', 'capital_P_dangit', 11 );
remove_filter( 'the_title', 'capital_P_dangit', 11 );
remove_filter( 'wp_title', 'capital_P_dangit', 11 );
remove_filter( 'comment_text', 'capital_P_dangit', 31 );
remove_filter( 'widget_text_content', 'capital_P_dangit', 11 );
Fragmento de código proporcionado por ClassicPress.
Y puedes sustituir la función simplemente escribiendo WordPress correctamente.
5. Desactivar XML-RPC
XML-RPC es una función casi obsoleta en WordPress y a menudo se recomienda desactivarla, ya que puede mejorar el rendimiento de tu sitio y, lo que es más importante, la seguridad, ya que puede ser un vector de ataque potencial para intentos de fuerza bruta. A menos que necesite específicamente la funcionalidad proporcionada, como para aplicaciones móviles o publicación remota, puede desactivarla con seguridad.
Hay varias maneras de desactivarlo, a través de Apache, Nginx o PHP, y la mayoría de los plugins relacionados con la seguridad y el inicio de sesión se ocupan de ello. El método más sencillo es con este one-liner proporcionado por Jeff Star de Perishable Press:
add_filter('xmlrpc_enabled', '__return_false');
En el artículo también se detalla cómo se carga realmente XML-RPC y más formas de desactivarlo, por lo que te recomiendo que consultes leerlo. También se recomienda desactivar X-Pingbacks:
// Desactivar cabecera X-Pingback
function shapeSpace_disable_x_pingback($headers) {
unset ($headers['X-Pingback']);
return $headers;
}
add_filter('wp_headers', 'shapeSpace_disable_x_pingback');
6. Desactivar Dashicons
Dashicons son las fuentes de iconos utilizados por WordPress Dashboard, y se cargan en el frontend, incluso cuando no se utilizan. Desactívalos con lo siguiente:
// quitar dashicons
function wpdocs_dequeue_dashicon() {
if (current_user_can( 'update_core' )) {
return;
}
wp_deregister_style('dashicons');
}
add_action( 'wp_enqueue_scripts', 'wpdocs_dequeue_dashicon' );
7. Desactivar Emojis
Aunque los emojis sólo añaden una carga insignificante al tamaño de las páginas, decidimos eliminarlos por una cuestión de principios.
/**
* Disable the emoji's
*/
function disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
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' );
add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
add_filter( 'wp_resource_hints', 'disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( 'init', 'disable_emojis' );
/**
* Filter function used to remove the tinymce emoji plugin.
*
* @param array $plugins
* @return array Difference betwen the two arrays
*/
function disable_emojis_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
} else {
return array();
}
}
/**
* Remove emoji CDN hostname from DNS prefetching hints.
*
* @param array $urls URLs to print for resource hints.
* @param string $relation_type The relation type the URLs are printed for.
* @return array Difference betwen the two arrays.
*/
function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {
if ( 'dns-prefetch' == $relation_type ) {
/** This filter is documented in wp-includes/formatting.php */
$emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/' );
$urls = array_diff( $urls, array( $emoji_svg_url ) );
}
return $urls;
}
8. Desactivar incrustaciones
Las incrustaciones automáticas pueden ser útiles, pero existen alternativas más eficaces. Elimínelas utilizando lo siguiente:
function disable_embeds_code_init() {
// Remove the REST API endpoint.
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
// Turn off oEmbed auto discovery.
add_filter( 'embed_oembed_discover', '__return_false' );
// Don't filter oEmbed results.
remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
// Remove oEmbed discovery links.
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
// Remove oEmbed-specific JavaScript from the front-end and back-end.
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );
// Remove all embeds rewrite rules.
add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
// Remove filter of the oEmbed result before any HTTP requests are made.
remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
}
add_action( 'init', 'disable_embeds_code_init', 9999 );
function disable_embeds_tiny_mce_plugin($plugins) {
return array_diff($plugins, array('wpembed'));
}
function disable_embeds_rewrites($rules) {
foreach($rules as $rule => $rewrite) {
if(false !== strpos($rewrite, 'embed=true')) {
unset($rules[$rule]);
}
}
return $rules;
}
9. Control de latidos
Heartbeat proporciona importantes funcionalidades a WordPress, como el autoguardado de entradas y el bloqueo de ediciones. Limitarlo a 5 minutos -o 300 segundos- puede tener un impacto similar al de deshabilitar la funcionalidad:
function wb_set_heartbeat_time_interval($settings) {
$settings['interval']=300;
return $settings;
}
add_filter('heartbeat_settings', 'wb_set_heartbeat_time_interval');
Aplica el mismo intervalo a los autoguardados con esta constante:
define( 'AUTOSAVE_INTERVAL', 300 );
10. Reiniciar con una cabecera más limpia
WordPress ha acumulado un montón de cosas a lo largo de los años, tratando de abrazar todas las nuevas tecnologías, y algunos de ellos se han quedado obsoletos o rara vez se utilizan. Pero todavía se cargan en cada página, en el lugar más importante.
Esta es una lista completa y segura.
// Eliminar enlace rsd.
remove_action( 'wp_head', 'rsd_link' );
// Eliminar la etiqueta generador de WordPress.
remove_action( 'wp_head', 'wp_generator' );
// Eliminar los enlaces RSS.
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
// Elimina el enlace al archivo de manifiesto de Windows Live Writer.
remove_action( 'wp_head', 'wlwmanifest_link' );
// Elimina los enlaces de post adyacentes.
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
// Elimina el enlace corto de WordPress para tu entrada.
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
0.5: Mejora de WordPress
1. No tenga miedo a los plugins
En Raybeam, no tememos a los plugins. Son la forma más fácil de añadir funciones avanzadas a WordPress en comparación con otras plataformas CMS. El número de plugins que utilices no es necesariamente el problema, sino su calidad.
Los plugins deben ser específicos, lo ideal es que hagan una sola cosa y la hagan excepcionalmente bien. Evita los plugins "todo en uno" que prometen hacerlo todo, ya que a menudo se quedan cortos y pueden saturar tu instalación.
En cuanto al rendimiento, no existe ningún plugin mágico que pueda solucionar al instante todos los problemas de velocidad de WordPress. En su lugar, es necesario entender las causas comunes de las ralentizaciones, tanto en el frontend como en el panel de control de administración, y abordarlas de forma individual. Afortunadamente, hemos identificado algunos culpables comunes.
2. Enseñe a sus plugins de alguna manera, evitando que se llenen Opciones Autoload
Esta es probablemente la razón número uno para un pobre rendimiento del dashboard. Los plugins tienen configuraciones y les gusta que se carguen rápido, así que llenan la tabla 'wp_options' con datos y la configuran para que se cargue en cada página. Esto puede empeorar cuando el plugin en cuestión se desactiva/elimina y todavía deja datos atrás.
El plugin Limpiador avanzado de bases de datos nos ofrece una buena vista de pájaro de lo que ocurre en nuestra base de datos y herramientas para solucionarlo. Opciones tiene información sobre los datos de cada plugin y si se autocargan por defecto o no. Limpieza general proporciona controles más precisos sobre Revisiones y Auto-draftun enfoque mejor que establecer límites codificados.
3. La concatenación CSS/JS está obsoleta
En el pasado, minificar y combinar archivos era esencial para acelerar los sitios web, especialmente antes de que dispusiéramos de métodos de compresión eficaces como Brotli y Gzip. Aunque la minificación sigue ayudando a reducir el tamaño de los archivos, su importancia ha disminuido con el auge de estas técnicas de compresión avanzadas que hacen un mejor trabajo reduciendo los archivos a nivel del servidor web.
Lo que realmente importa ahora es cómo se cargan los recursos en una página y si bloquean la visualización del contenido. Si los scripts o las hojas de estilo retrasan la carga del contenido de la página, puede afectar negativamente a la percepción del usuario y a la clasificación en los motores de búsqueda. Plugins como Debloat o Autoptimize puede ayudar optimizando los activos, asegurándose de que los elementos importantes se cargan primero y aplazando los menos críticos.
4. El tratamiento de imágenes es un asunto muy complicado
Las imágenes deben ser de alta calidad y estar preparadas para el futuro. Esto significa que deben capturarse y almacenarse en alta resolución, para que puedan mostrarse con claridad en una amplia gama de dispositivos, desde viejos smartphones hasta pantallas 4K. Sin embargo, las imágenes de alta resolución también pueden dar lugar a archivos de gran tamaño, lo que puede ralentizar los tiempos de carga del sitio web. WordPress genera automáticamente varias copias de las imágenes subidas con distintos tamaños de archivo, lo que permite almacenar varias versiones de la misma imagen.
Las compresiones con y sin pérdidas pueden lograr reducciones significativas del tamaño de los archivos, pero es necesario conservar los archivos originales de alta calidad, ya que las versiones comprimidas pueden no ser adecuadas para todos los casos de uso, y en el futuro pueden aparecer mejores métodos de compresión.
WebP y AVIF son formatos de compresión de última generación, pero su adopción ha sido desigual y sus ventajas frente a los formatos tradicionales no están claras al instante. Además, los motores de búsqueda han indicado que podrían penalizar a los sitios web que no utilicen estos formatos modernos.
No podrás gestionar todo esto tú solo sin un plugin o un servicio externo. Después de probar todas las opciones disponibles para WordPress, llegamos a la conclusión de que, aunque no existe la opción perfecta, EWWW Image Optimizer sigue siendo el mejor.
EWWW IO comprime tus imágenes utilizando un servicio API externo, descargando la carga de procesamiento de tu servidor. Proporciona el tamaño exacto de imagen para cada dispositivo, aprovechando su propia CDN. Y para mejorar el rendimiento, proporciona automáticamente versiones WebP/AVIF de tus imágenes cuando es compatible. La versión premium de este plugin está incluida en nuestro humilde pero generoso Goodies paquete.
5. Todos los constructores de páginas son una carga para el rendimiento
No me malinterpretes, los constructores de páginas, incluidos Gutenberg, Elementor, Bricks y Breakdance, están revolucionando WordPress para mejor. Gutenberg, los temas en bloque y los temas FSE tuvieron un comienzo difícil, pero son sin duda el futuro de WordPress.
Elementor es a menudo criticado dentro de la comunidad de WordPress, pero su popularidad y sus potentes características están rivalizando con plataformas como Wix, Squarespace y Webflow, a la vez que es gratuito, de código abierto, está dentro de tu servidor y funciona de forma tan sencilla como cualquier otro plugin.
Sin embargo, si un tema clásico (los que suelen tener un Personalice entrada de menú) es suficiente para tu proyecto, prefiere usarlo en lugar de un tema de bloques o un constructor de páginas. Y si no necesitas usar ninguna funcionalidad de bloques en absoluto, entonces considera desactivar Gutenberg.
Hay muchas maneras de hacerlo y restaurar el Editor Clásico, globalmente o para usuarios específicos, pero la mejor manera es el plugin Desactivar Gutenberg.
6. WooCommerce y sus plugins arrastrarán tu rendimiento a la baja
La instalación de cualquier solución de comercio electrónico en WordPress añade inevitablemente complejidad y repercute en su rendimiento general. WooCommerce -el plugin más popular para crear tiendas online- requiere una configuración adicional más allá de su activación inicial para satisfacer las necesidades reales del negocio. Para cubrir este vacío de funcionalidad, los propietarios de las tiendas deben recurrir a plugins y código personalizado, lo que puede ralentizar aún más el sitio.
Este impacto en el rendimiento se hace particularmente notable a medida que su tienda crece y recibe más tráfico y pedidos. Aunque las técnicas de optimización que abordamos en este artículo pueden ayudar, llega un punto en el que es necesario escalar los recursos de tu servidor para mantener un rendimiento aceptable. Es crucial tener en cuenta este escenario cuando planifiques potenciar tu tienda online con WooCommerce.
7. Estar siempre en guardia
Los sitios de WordPress pueden volverse complejos con el tiempo, por lo que es crucial comprobar su rendimiento con regularidad. Para que su sitio funcione sin problemas, utilice plugins como Monitor de consultas para comprobar regularmente las métricas de rendimiento de su sitio, como los tiempos de carga de las páginas y el uso de memoria. Además, emplee Depuración WP para investigar y resolver cualquier error o conflicto de PHP.
Mientras que Query Monitor se centra en la monitorización del rendimiento, WP Debugging es principalmente para el registro de errores y la resolución de problemas. El uso de ambas herramientas proporciona un enfoque integral para mantener la salud de su sitio.
1. DNS: Cloudflare
Todo empieza con la gestión de DNS y el proveedor más rápido y fiable es sin duda Cloudflare. Posicionándose delante de cada acceso, es lo primero que tus usuarios interactuarán cuando accedan a tu sitio, y tiene que ser rapidísimo.
Aplicamos los siguientes ajustes no predeterminados:
Velocidad (optimización)
- Speed Brain: En
- Rocket Loader™: En
- Optimización automática de la plataforma para WordPress (APO): En
- 0-RTT Reanudación de la conexión: En
Almacenamiento en caché
- Browser Cache TTL: Respetar las cabeceras existentes
- Crawler Hints: En
- Caché por niveles: Topología de caché por niveles
2. Hardware
Usted necesitará buenas especificaciones para ejecutar WordPress, preferiblemente una sola máquina - o VPS - para cada instalación, como lo hacemos aquí en Raybeam. Las empresas de alojamiento genérico o incluso "Managed WordPress Hosting" agruparán su sitio con cientos de otros en el mismo servidor o en un entorno de contenedores. Esto se hace generalmente para reducir costos y ofrecer una fácil escalabilidad, pero abren su sitio a problemas de rendimiento y seguridad.
Todos nuestros servidores funcionan con Contabo y cuentan con un hardware impresionante que garantiza un gran rendimiento:
- Todas las CPU AMD EPYC;
- Sólo almacenamiento NMVe SSD;
- 12 centros de datos en 9 regiones, con una latencia mínima;
- 32 TB de tráfico (10 TB para Australia y Japón).
3. Servidor: Ubuntu + WordOps
Ubuntu 22.04 es nuestra distribución de Linux preferida para instalaciones por defecto. Se utiliza mucho en servidores, ha demostrado ser muy fiable a lo largo de los años y cuenta con una comunidad sólida.
Además, aprovechamos WordOps para gestionar nuestros servidores y sitios de WordPress. Esta herramienta viene repleta de valores predeterminados de rendimiento, incluidas versiones ajustadas de MariaDB, PHP y Nginx.
Una salvaguardia intercambiar de al menos 2 GB y proporcional a su RAM disponible se añade para evitar que trabajos costosos, particularmente de MySQL, derriben el servidor en raras ocasiones.
4. Cachés:
Nuestro sistema de caché utiliza una arquitectura por capas, en la que cada capa de caché aplica sus propias optimizaciones especializadas. Este enfoque por niveles permite al sistema de caché mejorar progresivamente el rendimiento, con cachés de nivel superior que aprovechan las capacidades de las de nivel inferior:
- OPcache: Zend OPcache está habilitado por defecto desde PHP 5.5. Más información en este artículo proporcionado por WP Rocket;
- Caché de objetos: Activamos Redis por defecto en todas las instalaciones, utilizando la versión gratuita de Plugin de caché de objetos Redis. Wetopi ofrece un artículo sobre las expectativas realistas que debe tener al utilizar Redis en WordPress;
- Caché de página: WordOps proporciona una caché de página Redis construido con Nginx siempre Redis está habilitado;
- Caché del navegador: Gran navegador caché por defecto para Nginx viene empaquetado por defecto por WordOps, que también incluye la compresión Brotli;
- Caché de borde: El servicio de pago Cloudflare APO está incluido en todos los planes como parte de nuestro paquete Goodies y actúa como un híbrido entre caché de página y de borde para WordPress, haciendo copias estáticas de tus páginas y enviándolas a todas las zonas. Tenga en cuenta que no anula completamente la caché del navegador de Nginx, pero puede modificar las cabeceras. El mejor artículo sobre ello es éste proporcionado por Brian Li.

Deja una respuesta