Pulsa ESC para cerrar

Curso WordpressCurso Wordpress

Escritorio de WordPress lento: Heartbeat, comprobaciones de actualizaciones y peticiones externas

Es una queja muy común: la parte pública del sitio va bien, pero el escritorio tarda varios segundos en cada pantalla. Abrir una entrada, guardar, ir a Plugins: todo se siente pesado.

La caché de página no ayuda aquí, porque el escritorio nunca se cachea. Las causas son otras, y casi siempre son las mismas.

Paso 1: encontrar la causa

Instala Query Monitor y abre una pantalla lenta del escritorio. En su menú de la barra superior revisa:

  • HTTP API Calls: peticiones que WordPress hace a otros servidores mientras carga la pantalla. Si alguna tarda segundos o termina en *timeout*, ese es tu problema.
  • Queries by Component: qué plugin hace más consultas a la base de datos.
  • Admin Screen / Hooks: qué se ejecuta en esa pantalla.

En la mayoría de los casos, el culpable aparece en HTTP API Calls.

Causa 1: peticiones a servidores externos

WordPress y los plugins se conectan a otros servidores para comprobar actualizaciones, validar licencias, mostrar noticias o enviar estadísticas. Si uno de esos servidores responde lento o no responde, tu escritorio espera.

Las más típicas:

  • Plugins premium validando su licencia en cada pantalla.
  • El widget Eventos y noticias de WordPress del escritorio.
  • Plugins que muestran avisos o publicidad descargados de su servidor.

Soluciones, de menos a más drásticas:

  1. Actualiza el plugin culpable o escribe a su soporte: suele ser un fallo conocido.
  2. Quita los widgets del escritorio que no usas (Opciones de pantalla, arriba a la derecha).
  3. Bloquea las peticiones externas, permitiendo solo las que necesitas (ver el mu-plugin abajo).

Causa 2: Heartbeat

Heartbeat es un «latido» que el navegador envía al servidor cada 15 a 60 segundos mientras tienes el escritorio abierto: sirve para el guardado automático, para avisar si otra persona está editando la misma entrada y para renovar la sesión. Con varias pestañas abiertas o varios editores trabajando, son muchas peticiones a admin-ajax.php.

No conviene apagarlo del todo (perderías el guardado automático), pero sí espaciarlo.

Causa 3: comprobaciones repetidas

WordPress comprueba si hay actualizaciones del núcleo, plugins y temas, normalmente dos veces al día. Pero algunos plugins fuerzan esa comprobación en cada carga de ciertas pantallas, y la herramienta Salud del sitio ejecuta pruebas que hacen peticiones externas.

El mu-plugin

Guárdalo como wp-content/mu-plugins/cwp-escritorio-agil.php y ajusta las listas:

<?php
/**
 * Plugin Name: Escritorio ágil (Curso WordPress)
 */

// 1. Heartbeat cada 60 segundos en lugar de 15 (en el editor).
add_filter( 'heartbeat_settings', function ( $ajustes ) {
	$ajustes['interval'] = 60;
	return $ajustes;
} );

// 2. Quitar el widget de eventos y noticias del escritorio.
add_action( 'wp_dashboard_setup', function () {
	remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
} );

// 3. Bloquear dominios externos que frenan el escritorio (ajusta la lista).
const CWP_DOMINIOS_BLOQUEADOS = array( 'api.plugin-que-tarda.com' );

add_filter( 'pre_http_request', function ( $respuesta, $args, $url ) {
	$host = wp_parse_url( $url, PHP_URL_HOST );
	if ( $host && in_array( $host, CWP_DOMINIOS_BLOQUEADOS, true ) ) {
		return new WP_Error( 'cwp_bloqueado', 'Petición externa bloqueada.' );
	}
	return $respuesta;
}, 10, 3 );

No bloquees api.wordpress.org ni downloads.wordpress.org: son los servidores de actualizaciones de WordPress y de los plugins gratuitos. Bloquearlos te dejaría sin actualizaciones de seguridad. Y si bloqueas el servidor de licencias de un plugin premium, ese plugin dejará de recibir sus actualizaciones.

Otras causas que vale la pena revisar

  • Opciones autoload pesadas: afectan al escritorio tanto como a la web.
  • Sin caché de objetos: en sitios con muchos plugins o WooCommerce, una caché de objetos (Redis) es lo que más se nota en el escritorio.
  • WP-Cron ejecutándose al cargar páginas: si tienes tareas pesadas, pásalas a un cron real del servidor.
  • Listados con muchas columnas: en Entradas o Pedidos, usa Opciones de pantalla para ocultar columnas que agregan los plugins y bajar la cantidad de elementos por página.

¿Query Monitor te muestra una petición externa lenta y no sabes de qué plugin es? Comparte el dominio en el foro y lo identificamos.