The heartbeat_send WordPress PHP filter allows you to modify the Heartbeat API response before it is sent back to the client.
Usage
add_filter('heartbeat_send', 'my_custom_heartbeat_send', 10, 2); function my_custom_heartbeat_send($response, $screen_id) { // your custom code here return $response; }
Parameters
$response
(array) – The Heartbeat response data.$screen_id
(string) – The screen ID for the current page in the admin area.
More information
See WordPress Developer Resources: heartbeat_send
Examples
Add custom data to Heartbeat response
Add custom data to the Heartbeat response to update the client-side.
add_filter('heartbeat_send', 'add_custom_data_to_heartbeat', 10, 2); function add_custom_data_to_heartbeat($response, $screen_id) { $response['my_custom_data'] = 'Hello from server!'; return $response; }
Modify the Autosave interval
Change the Autosave interval based on the screen ID.
add_filter('heartbeat_send', 'modify_autosave_interval', 10, 2); function modify_autosave_interval($response, $screen_id) { if ('post' === $screen_id) { $response['heartbeat_interval'] = 120; // Autosave every 120 seconds } return $response; }
Send a notification when a new post is published
Send a notification to the client when a new post is published.
add_filter('heartbeat_send', 'send_new_post_notification', 10, 2); function send_new_post_notification($response, $screen_id) { $last_published = get_transient('last_published_post'); if (false !== $last_published) { $response['new_post_notification'] = $last_published; delete_transient('last_published_post'); } return $response; }
Refresh nonces
Refresh nonces for forms on the current screen.
add_filter('heartbeat_send', 'refresh_nonces', 10, 2); function refresh_nonces($response, $screen_id) { if ('post' === $screen_id) { $response['new_nonce'] = wp_create_nonce('my_custom_nonce'); } return $response; }
Send logged-in user count
Send the number of logged-in users to the client.
add_filter('heartbeat_send', 'send_logged_in_user_count', 10, 2); function send_logged_in_user_count($response, $screen_id) { $user_count = count_users(); $response['logged_in_users'] = $user_count['total_users']; return $response; }