The heartbeat_settings WordPress PHP Filter allows you to modify the Heartbeat settings in WordPress.
Usage
add_filter('heartbeat_settings', 'your_custom_function');
function your_custom_function($settings) {
// your custom code here
return $settings;
}
Parameters
$settings(array) – Heartbeat settings array.
More information
See WordPress Developer Resources: heartbeat_settings
Examples
Change Heartbeat frequency
This example adjusts the Heartbeat interval to 45 seconds.
add_filter('heartbeat_settings', 'change_heartbeat_frequency');
function change_heartbeat_frequency($settings) {
$settings['interval'] = 45; // Set interval to 45 seconds
return $settings;
}
Disable Heartbeat
This example completely disables the Heartbeat.
add_filter('heartbeat_settings', 'disable_heartbeat');
function disable_heartbeat($settings) {
$settings['disabled'] = true; // Disable Heartbeat
return $settings;
}
Enable Heartbeat only on post edit pages
This example enables the Heartbeat only on post edit pages.
add_filter('heartbeat_settings', 'enable_heartbeat_on_post_edit_pages');
function enable_heartbeat_on_post_edit_pages($settings) {
if (get_current_screen()->base !== 'post') {
$settings['disabled'] = true; // Disable Heartbeat
}
return $settings;
}
Change Heartbeat frequency based on user role
This example changes the Heartbeat frequency based on the user’s role.
add_filter('heartbeat_settings', 'change_heartbeat_frequency_based_on_role');
function change_heartbeat_frequency_based_on_role($settings) {
$user = wp_get_current_user();
if (in_array('administrator', $user->roles)) {
$settings['interval'] = 15; // Set interval to 15 seconds for administrators
} else {
$settings['interval'] = 60; // Set interval to 60 seconds for other users
}
return $settings;
}
Modify Heartbeat settings on the frontend
This example modifies the Heartbeat settings only on the frontend of the website.
add_filter('heartbeat_settings', 'modify_heartbeat_on_frontend');
function modify_heartbeat_on_frontend($settings) {
if (!is_admin()) {
$settings['interval'] = 30; // Set interval to 30 seconds on frontend
$settings['screen_id'][] = 'frontend'; // Add a new screen_id for the frontend
}
return $settings;
}