В первой части этой серии мы рассмотрели основы API Heartbeat, и как это можно реализовать в плагине. В этом уроке мы рассмотрим, как вы можете изменить «пульс» сердцебиения.
По умолчанию сердце WordPress бьется каждые 15 секунд. Вы можете понизить эту частоту до одного удара каждую минуту. В качестве альтернативы вы можете временно увеличить частоту до одного удара каждые 5 секунд — но только временно на две с половиной минуты, прежде чем она будет сброшена до «стандартного» удара: «4 ударов в минуту».
Изменить импульс по умолчанию
Чтобы изменить импульс по умолчанию, вы можете использовать фильтр wp_heartbeat_filter
который фильтрует начальные настройки API Heartbeat. Этот фильтр не позволяет вам изначально установить «быстрый» импульс: вместо этого вы можете указать только число от 15 до 60 (интервал между ударами в секундах).
1
2
3
4
5
|
function wptuts_heartbeat_settings( $settings ) {
$settings[‘interval’] = 60;
return $settings;
}
add_filter( ‘heartbeat_settings’, ‘wptuts_heartbeat_settings’ );
|
Выключить автозапуск
Хотя запросы отправляются на сервер только при наличии данных для отправки, Hearbeat запускается автоматически при загрузке страницы. Вы можете отключить автозапуск из настроек пульса по умолчанию:
1
2
3
4
5
|
function wptuts_heartbeat_settings( $settings ) {
$settings[‘autostart’] = false;
return $settings;
}
add_filter( ‘heartbeat_settings’, ‘wptuts_heartbeat_settings’ );
|
Переключаясь с серверной части на браузер, Heartbeat будет запускаться только в том случае, если:
1
|
wp.heartbeat.start();
|
называется. Вы также можете отключить Heartbeat на стороне клиента:
1
|
wp.heartbeat.stop();
|
Изменить пульс на стороне клиента
Помимо включения и выключения Heartbeat, вы можете управлять импульсом (например) в ответ на определенные события, инициированные пользователем. Например, вы можете прослушивать, когда пользователь запускает действие, которое требует более регулярной связи с сервером, и, таким образом, временно увеличивать скорость.
Из вашего скрипта JavaScript:
1
2
3
4
5
6
7
8
|
// 1 beat every 5 seconds for a maximum of two and half minutes
wp.heartbeat.interval( ‘fast’ );
// 1 beat every 60 seconds
wp.heartbeat.interval( ‘slow’ );
// 1 beat every 15 seconds
wp.heartbeat.interval( ‘standard’ );
|
Изменить серверную часть Pulse
Помимо изменения импульсной стороны браузера, мы также можем делать это каждый раз, когда браузер связывается с сервером. Это можно сделать, установив в ответе « heartbeat_interval
» — это может быть « fast
», « slow
» или « standard
».
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
function wptuts_respond_to_browser( $response, $data, $screen_id ) {
if ( isset( $data[‘wptuts-plugin’] ) ) {
// Plug-in data being sent to browser
$response[‘wptuts-plugin’] = array(
‘hello’ => ‘world’
);
// Slow the hearbeat
$response[‘heartbeat_interval’] = ‘slow’;
}
return $response;
}
add_filter( ‘heartbeat_received’, ‘wptuts_respond_to_browser’, 10, 3 );
add_filter( ‘heartbeat_nopriv_received’, ‘wptuts_respond_to_browser’, 10, 3 );
|
Неактивность пользователя
API Heartbeat также регулирует ритм в зависимости от активности пользователя. WordPress проверяет активность пользователя каждые 30 секунд. Если через 5 минут не было активности клавиатуры или мыши, удар сокращается до одного удара каждые сто секунд. Это делается независимо от того, что было установлено плагином.
В заключительной части этой серии мы создадим простой рабочий пример плагина с использованием нового API Heartbeat. Мы создадим плагин, который будет предоставлять пользователям «живые» обновления, когда пользователи входят и выходят из WordPress.