Pendant qu’un article est en cours de rédaction dans l’administration, plusieurs mécanismes doivent rester synchronisés avec le serveur sans que l’utilisateur ait à recharger la page — c’est le rôle de ce battement régulier initié depuis WordPress 3.6.
Fonctionnement dans WordPress
Le script heartbeat.js, chargé dans l’administration et parfois sur le site public, envoie une requête AJAX vers admin-ajax.php à intervalle régulier — quinze secondes par défaut sur l’écran d’édition, ajustable via le filtre heartbeat_settings. Chaque pulsation permet à des scripts tiers d’ajouter des données à envoyer ou à recevoir, via les hooks JavaScript heartbeat-send et heartbeat-tick. C’est ce mécanisme qui alimente le verrouillage d’édition et la sauvegarde automatique.
Exemple
add_filter( 'heartbeat_settings', function( $settings ) {
$settings['interval'] = 30; // secondes
return $settings;
} );
Bon à savoir
Sur un hébergement mutualisé aux ressources limitées, des pulsations trop fréquentes sur de nombreux onglets ouverts simultanément peuvent générer une charge serveur non négligeable ; plusieurs extensions se contentent de désactiver le Heartbeat en dehors de l’écran d’édition plutôt que de le couper entièrement.
Un intervalle réduit à quelques secondes améliore la réactivité du verrouillage d’édition, mais multiplie d’autant les requêtes AJAX envoyées par chaque navigateur ouvert sur l’administration ; un compromis autour de trente à soixante secondes convient à la plupart des sites de taille moyenne.