PHP / Intermedio / 4 min
Controlar la Heartbeat API de WordPress
Reduce la carga de admin-ajax.php ralentizando o desactivando la Heartbeat API, causa comun de picos de CPU.
La Heartbeat API de WordPress envía peticiones a admin-ajax.php cada 15 segundos mientras tienes el panel abierto. Es útil para el autoguardado y avisos de sesión, pero en hostings compartidos dispara el uso de CPU y llena los logs. Este snippet la desactiva en el frontend, la ralentiza en el panel y la mantiene solo donde de verdad importa: el editor de entradas.
Guía de Implementación Paso a Paso
- Abre el
functions.phpde tu tema hijo o un plugin de snippets. - Pega el código de abajo al final.
- Guarda los cambios.
- Abre el panel y comprueba en la pestaña Network del navegador que las peticiones a
admin-ajax.phpconaction=heartbeatahora son más espaciadas o desaparecen fuera del editor.
PHP
// 1. Desactivar Heartbeat donde no hace falta (frontend y dashboard general)
add_action( 'init', function () {
global $pagenow;
// Solo lo permitimos en el editor de entradas y páginas
if ( 'post.php' !== $pagenow && 'post-new.php' !== $pagenow ) {
wp_deregister_script( 'heartbeat' );
}
}, 1 );
// 2. Donde sí se usa, espaciar el intervalo de 15s a 60s (máximo permitido)
add_filter( 'heartbeat_settings', function ( $settings ) {
$settings['interval'] = 60;
return $settings;
} );
Si usas plugins que dependen del Heartbeat (algunos de e-commerce o edición colaborativa), no lo desactives del todo: quédate solo con el punto 2 para espaciar el intervalo. Bajar de 15 a 60 segundos ya recorta las peticiones en un 75 %.
