главная/WordPress Heartbeat API
WordPress Heartbeat API

WordPress Heartbeat API

WordPress Heartbeat API представляет собой функцию, которая обеспечивает связь между браузером и сервером, позволяя выполнять периодические автоматические задачи.

Вот несколько ключевых моментов и примеров, чтобы понять его подробнее:

Основная концепция

  1. Что такое Heartbeat API?
    • Это как пульс, который работает в фоновом режиме и помогает обновлять информацию в реальном времени.
    • Он используется для того, чтобы информация на вашем сайте всегда была актуальной, даже если вы не обновляете страницу.
  2. Как он работает?
    • Heartbeat API отправляет AJAX-запросы к серверу через определенные интервалы времени.
    • Эти запросы обновляют определенные данные и функциональность WordPress.

Примеры использования

  1. Автосохранение и блокировка записей:
    • Когда вы редактируете запись, Heartbeat API помогает автоматически сохранять вашу работу.
    • Он также предупреждает других пользователей, что данная запись уже редактируется, чтобы избежать конфликтов редактирования.
  2. Уведомления в админ-панели:
    • Если вы находитесь в админ-панели WordPress, Heartbeat может показывать уведомления в реальном времени, например, о новых комментариях или обновлениях.
  3. Синхронизация сессий:
    • Если вы вошли в несколько вкладок WordPress, пульс помогает синхронизировать их, чтобы изменения, сделанные в одной вкладке, отображались в других.

Влияние на производительность

  • Heartbeat может оказывать значительное влияние на производительность сервера, особенно на больших или плохо оптимизированных сайтах.
  • Периодические запросы к серверу могут нагружать его, что иногда приводит к замедлению работы сайта.

Управление и оптимизация

  • Вы можете управлять частотой и поведением пульса с помощью различных плагинов или кастомного кода.
  • Например, вы можете ограничить частоту запросов или отключить вовсе для определенных частей сайта, чтобы оптимизировать производительность.

Изменение интервала Heartbeat

Этот пример устанавливает интервал в 15 секунд:

add_filter( 'heartbeat_settings', 'custom_heartbeat_settings' );
function custom_heartbeat_settings( $settings ) {
    $settings['interval'] = 15; // В секундах
    return $settings;
}

Отправка данных на сервер с помощью Heartbeat

Чтобы отправить данные на сервер при каждом тике Heartbeat, используйте хук heartbeat_send.

add_filter( 'heartbeat_send', 'send_custom_data_to_heartbeat', 10, 2 );
function send_custom_data_to_heartbeat( $response, $data ) {
    if ( isset( $data['custom_data'] ) ) {
        // Обработка custom_data, отправленного из браузера
        $response['custom_data_response'] = 'Ответ на custom_data';
    }
    return $response;
}

В JavaScript вы можете отправить custom_data таким образом:

jQuery(document).on('heartbeat-send', function(e, data) {
    data.custom_data = 'Значение';
});

Получение данных с сервера

Также можно получать данные с сервера при каждом тике.

Это может быть использовано, например, для отображения уведомлений в реальном времени.

add_filter( 'heartbeat_received', 'receive_custom_data_from_heartbeat', 10, 2 );
function receive_custom_data_from_heartbeat( $response, $data ) {
    if ( isset( $data['get_custom_data'] ) ) {
        // Отправка данных обратно в браузер
        $response['custom_data_received'] = 'Некоторые данные с сервера';
    }
    return $response;
}

В JavaScript для получения этой информации:

jQuery(document).on('heartbeat-tick', function(e, data) {
    if (data.custom_data_received) {
        console.log('Получены данные с сервера: ' + data.custom_data_received);
    }
});