Using WordPress ‘heartbeat_nopriv_send’ PHP filter

The heartbeat_nopriv_send WordPress PHP Filter allows you to modify the Heartbeat API’s AJAX response when no data is passed and the user does not have privileges.

Usage

add_filter('heartbeat_nopriv_send', 'your_custom_function', 10, 2);
function your_custom_function($response, $screen_id) {
    // your custom code here
    return $response;
}

Parameters

  • $response (array) – The no-privilege Heartbeat response.
  • $screen_id (string) – The screen ID.

More information

See WordPress Developer Resources: heartbeat_nopriv_send

Examples

Modify the response for a specific screen ID

Modify the Heartbeat response for a specific screen ID in no-privilege environments.

add_filter('heartbeat_nopriv_send', 'modify_response_for_screen_id', 10, 2);
function modify_response_for_screen_id($response, $screen_id) {
    if ($screen_id === 'your_screen_id') {
        $response['custom_key'] = 'custom_value';
    }
    return $response;
}

Add custom data to the Heartbeat response

Add custom data to the Heartbeat response in no-privilege environments.

add_filter('heartbeat_nopriv_send', 'add_custom_data_to_response', 10, 2);
function add_custom_data_to_response($response, $screen_id) {
    $response['your_data_key'] = 'your_data_value';
    return $response;
}

Remove a specific key from the Heartbeat response

Remove a specific key from the Heartbeat response in no-privilege environments.

add_filter('heartbeat_nopriv_send', 'remove_key_from_response', 10, 2);
function remove_key_from_response($response, $screen_id) {
    unset($response['key_to_remove']);
    return $response;
}

Change the interval of the Heartbeat API

Change the interval of the Heartbeat API in no-privilege environments based on the screen ID.

add_filter('heartbeat_nopriv_send', 'change_heartbeat_interval', 10, 2);
function change_heartbeat_interval($response, $screen_id) {
    if ($screen_id === 'your_screen_id') {
        $response['heartbeat_interval'] = 45; // Set the interval to 45 seconds.
    }
    return $response;
}

Log Heartbeat responses

Log the Heartbeat responses in no-privilege environments for debugging purposes.

add_filter('heartbeat_nopriv_send', 'log_heartbeat_responses', 10, 2);
function log_heartbeat_responses($response, $screen_id) {
    error_log('Heartbeat response for screen ID ' . $screen_id . ': ' . json_encode($response));
    return $response;
}