heartbeat_autosave()

Выполняет автоматическое сохранение (autosave) с использованием механизма "heartbeat"
Функция WordPress
INT 3.9.0
WordPress Icon
Содержание
  1. Описание функции
  2. Примеры использования
  3. Сохранение данных при помощи функции heartbeat_autosave()
  4. Обновление контента с использованием функции heartbeat_autosave()
  5. Отправка уведомлений с помощью функции heartbeat_autosave()
  6. Синхронизация данных между клиентом и сервером с использованием функции heartbeat_autosave()
  7. Автоматическое сохранение черновика с помощью функции heartbeat_autosave()
  8. Вопросы и ответы
  9. Как настроить автосохранение с помощью функции heartbeat_autosave()?
  10. Как изменить интервал автосохранения при использовании функции heartbeat_autosave()?
  11. Как отключить автосохранение с помощью функции heartbeat_autosave()?
  12. Как обработать ошибку при выполнении автосохранения с помощью функции heartbeat_autosave()?
  13. Как получить данные, отправленные через $_POST при использовании функции heartbeat_autosave()?
  14. Какие данные содержит ответ от функции heartbeat_autosave()?
  15. Как использовать функцию heartbeat_autosave() для сохранения дополнительных полей формы?
  16. Как использовать функцию heartbeat_autosave() для выполнения дополнительных действий при автосохранении?
  17. Как обработать ошибку при автосохранении с помощью функции heartbeat_autosave()?
  18. Связанные элементы

Описание функции

Функция heartbeat_autosave() выполняет автоматическое сохранение с использованием механизма Heartbeat. Она вызывается при отправке данных POST на сервер и обрабатывает эти данные для выполнения автосохранения.

Heartbeat — это механизм в WordPress, который позволяет браузеру устанавливать постоянное соединение с сервером и обмениваться данными. Он используется для различных задач, включая автосохранение, проверку статуса соединения и уведомления о действиях пользователей.

Использование

heartbeat_autosave( array $response, array $data ): array

Функция heartbeat_autosave() принимает два обязательных параметра: $response (массив с данными ответа Heartbeat) и $data (массив с данными POST, отправленными на сервер).

Она возвращает массив с данными ответа Heartbeat.

  • $response (array) — Обязательный. Ответ Heartbeat.
  • $data (array) — Обязательный. Данные POST, отправленные на сервер.

Функция возвращает массив с данными ответа Heartbeat.


/**
 * Обработка автосохранения с использованием Heartbeat.
 *
 * @param array $response Ответ Heartbeat.
 * @param array $data Данные POST, отправленные на сервер.
 * @return array Данные ответа Heartbeat.
 */
function heartbeat_autosave( $response, $data ) {
    // Получение ID записи из данных POST.
    $post_id = absint( $data['post_id'] );
    // Проверка наличия ID записи.
    if ( ! $post_id ) {
        return $response;
    }
    // Получение объекта записи.
    $post = get_post( $post_id );
    // Проверка наличия объекта записи.
    if ( ! $post ) {
        return $response;
    }
    // Выполнение автосохранения.
    wp_autosave_post( $post_id );
    // Обновление времени последнего сохранения.
    update_post_meta( $post_id, '_edit_last', get_current_user_id() );
    // Обновление времени последнего изменения.
    wp_update_post( array( 'ID' => $post_id ) );
    // Установка успешного статуса ответа.
    $response['heartbeat_success'] = true;
    return $response;
}

В данном примере показана функция heartbeat_autosave(), которая обрабатывает автосохранение с использованием Heartbeat. Она принимает два параметра: $response (массив с данными ответа Heartbeat) и $data (массив с данными POST, отправленными на сервер).

Сначала функция получает ID записи из данных POST и проверяет его наличие. Затем она получает объект записи и проверяет его наличие. После этого выполняется автосохранение с помощью функции wp_autosave_post(). Затем обновляется время последнего сохранения и время последнего изменения записи. В конце устанавливается успешный статус ответа Heartbeat.

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

Сохранение данных при помощи функции heartbeat_autosave()


add_action( 'heartbeat_autosave', 'my_heartbeat_autosave', 10, 2 );
/**
 * Saves data using heartbeat_autosave.
 *
 * @param array $response The Heartbeat response.
 * @param array $data     The $_POST data sent.
 */
function my_heartbeat_autosave( $response, $data ) {
    // Ваш код сохранения данных
    // ...
    $response['my_data'] = 'Data saved successfully.';
    return $response;
}

В этом примере мы используем хук ‘heartbeat_autosave’, чтобы сохранить данные при помощи функции ‘my_heartbeat_autosave’.
Функция ‘my_heartbeat_autosave’ принимает два параметра: $response и $data.
Параметр $response представляет собой массив с ответом Heartbeat, а параметр $data содержит данные, отправленные с помощью $_POST.
Внутри функции вы можете добавить свой собственный код сохранения данных.
В данном случае мы добавляем новый элемент ‘my_data’ в массив $response и возвращаем обновленный массив.

Обновление контента с использованием функции heartbeat_autosave()


add_action( 'heartbeat_autosave', 'my_heartbeat_autosave', 10, 2 );
/**
 * Updates content using heartbeat_autosave.
 *
 * @param array $response The Heartbeat response.
 * @param array $data     The $_POST data sent.
 */
function my_heartbeat_autosave( $response, $data ) {
    // Ваш код обновления контента
    // ...
    $response['content'] = 'Content updated successfully.';
    return $response;
}

В этом примере мы используем хук ‘heartbeat_autosave’, чтобы обновить контент с помощью функции ‘my_heartbeat_autosave’.
Функция ‘my_heartbeat_autosave’ принимает два параметра: $response и $data.
Параметр $response представляет собой массив с ответом Heartbeat, а параметр $data содержит данные, отправленные с помощью $_POST.
Внутри функции вы можете добавить свой собственный код обновления контента.
В данном случае мы обновляем элемент ‘content’ в массиве $response и возвращаем обновленный массив.

Отправка уведомлений с помощью функции heartbeat_autosave()


add_action( 'heartbeat_autosave', 'my_heartbeat_autosave', 10, 2 );
/**
 * Sends notifications using heartbeat_autosave.
 *
 * @param array $response The Heartbeat response.
 * @param array $data     The $_POST data sent.
 */
function my_heartbeat_autosave( $response, $data ) {
    // Ваш код отправки уведомлений
    // ...
    $response['notification'] = 'Notification sent successfully.';
    return $response;
}

В этом примере мы используем хук ‘heartbeat_autosave’, чтобы отправить уведомления с помощью функции ‘my_heartbeat_autosave’.
Функция ‘my_heartbeat_autosave’ принимает два параметра: $response и $data.
Параметр $response представляет собой массив с ответом Heartbeat, а параметр $data содержит данные, отправленные с помощью $_POST.
Внутри функции вы можете добавить свой собственный код отправки уведомлений.
В данном случае мы добавляем новый элемент ‘notification’ в массив $response и возвращаем обновленный массив.

Синхронизация данных между клиентом и сервером с использованием функции heartbeat_autosave()


add_action( 'heartbeat_autosave', 'my_heartbeat_autosave', 10, 2 );
/**
 * Syncs data between client and server using heartbeat_autosave.
 *
 * @param array $response The Heartbeat response.
 * @param array $data     The $_POST data sent.
 */
function my_heartbeat_autosave( $response, $data ) {
    // Ваш код синхронизации данных
    // ...
    $response['sync'] = 'Data synced successfully.';
    return $response;
}

В этом примере мы используем хук ‘heartbeat_autosave’, чтобы синхронизировать данные между клиентом и сервером с помощью функции ‘my_heartbeat_autosave’.
Функция ‘my_heartbeat_autosave’ принимает два параметра: $response и $data.
Параметр $response представляет собой массив с ответом Heartbeat, а параметр $data содержит данные, отправленные с помощью $_POST.
Внутри функции вы можете добавить свой собственный код синхронизации данных.
В данном случае мы добавляем новый элемент ‘sync’ в массив $response и возвращаем обновленный массив.

Автоматическое сохранение черновика с помощью функции heartbeat_autosave()


add_action( 'heartbeat_autosave', 'my_heartbeat_autosave', 10, 2 );
/**
 * Autosaves draft using heartbeat_autosave.
 *
 * @param array $response The Heartbeat response.
 * @param array $data     The $_POST data sent.
 */
function my_heartbeat_autosave( $response, $data ) {
    // Ваш код автоматического сохранения черновика
    // ...
    $response['autosave'] = 'Draft autosaved successfully.';
    return $response;
}

В этом примере мы используем хук ‘heartbeat_autosave’, чтобы автоматически сохранить черновик с помощью функции ‘my_heartbeat_autosave’.
Функция ‘my_heartbeat_autosave’ принимает два параметра: $response и $data.
Параметр $response представляет собой массив с ответом Heartbeat, а параметр $data содержит данные, отправленные с помощью $_POST.
Внутри функции вы можете добавить свой собственный код автоматического сохранения черновика.
В данном случае мы добавляем новый элемент ‘autosave’ в массив $response и возвращаем обновленный массив.

Вопросы и ответы

Как настроить автосохранение с помощью функции heartbeat_autosave()?

Для настройки автосохранения с помощью функции heartbeat_autosave() необходимо передать данные в виде массива в качестве параметра $data. Этот массив должен содержать данные, отправленные через $_POST.


$data = array(
    'post_id' => 123,
    'post_type' => 'post',
    'autosave' => true
);
$response = array();
$response = heartbeat_autosave($response, $data);

Как изменить интервал автосохранения при использовании функции heartbeat_autosave()?

Интервал автосохранения при использовании функции heartbeat_autosave() можно изменить с помощью фильтра ‘heartbeat_autosave_interval’. Для этого необходимо добавить следующий код в файл functions.php вашей темы:


function custom_heartbeat_autosave_interval($interval) {
    return 60; // Интервал в секундах
}
add_filter('heartbeat_autosave_interval', 'custom_heartbeat_autosave_interval');

Как отключить автосохранение с помощью функции heartbeat_autosave()?

Для отключения автосохранения с помощью функции heartbeat_autosave() необходимо добавить следующий код в файл functions.php вашей темы:


function disable_heartbeat_autosave() {
    wp_deregister_script('heartbeat');
}
add_action('init', 'disable_heartbeat_autosave');

Как обработать ошибку при выполнении автосохранения с помощью функции heartbeat_autosave()?

Для обработки ошибки при выполнении автосохранения с помощью функции heartbeat_autosave() необходимо использовать хук heartbeat_autosave_error. Этот хук вызывается при возникновении ошибки и позволяет добавить свою обработку ошибки.

Пример кода:


add_action( 'heartbeat_autosave_error', 'my_heartbeat_autosave_error_handler' );
function my_heartbeat_autosave_error_handler( $error ) {
    // Ваш код обработки ошибки
}

Как получить данные, отправленные через $_POST при использовании функции heartbeat_autosave()?

Для получения данных, отправленных через $_POST при использовании функции heartbeat_autosave(), необходимо использовать хук heartbeat_received. Этот хук вызывается при получении данных и позволяет получить доступ к этим данным.

Пример кода:


add_filter( 'heartbeat_received', 'my_heartbeat_received_handler', 10, 2 );
function my_heartbeat_received_handler( $response, $data ) {
    // Ваш код для работы с данными
    return $response;
}

Какие данные содержит ответ от функции heartbeat_autosave()?

Функция heartbeat_autosave() возвращает массив с ответом Heartbeat. Этот ответ содержит различные данные, включая информацию об автосохранении.

Пример кода:


add_filter( 'heartbeat_autosave', 'my_heartbeat_autosave_handler', 10, 2 );
function my_heartbeat_autosave_handler( $response, $data ) {
    // Ваш код для работы с ответом
    return $response;
}

Как использовать функцию heartbeat_autosave() для сохранения дополнительных полей формы?

Функция heartbeat_autosave() позволяет сохранять дополнительные поля формы при автосохранении.

Для использования этой функции необходимо передать два обязательных параметра:

  • $response — массив с ответом от Heartbeat.
  • $data — массив с данными, отправленными через $_POST.

Пример использования функции heartbeat_autosave() для сохранения дополнительных полей формы:


function my_heartbeat_autosave( $response, $data ) {
  // Сохранение дополнительных полей формы
  $my_field = isset( $data['my_field'] ) ? sanitize_text_field( $data['my_field'] ) : '';
  update_option( 'my_field', $my_field );
  return $response;
}
add_filter( 'heartbeat_autosave', 'my_heartbeat_autosave', 10, 2 );

Как использовать функцию heartbeat_autosave() для выполнения дополнительных действий при автосохранении?

Функция heartbeat_autosave() также может быть использована для выполнения дополнительных действий при автосохранении.

Для этого необходимо добавить свою функцию-обработчик и подключить ее с помощью хука heartbeat_autosave.

Пример использования функции heartbeat_autosave() для выполнения дополнительных действий при автосохранении:


function my_custom_action( $response, $data ) {
  // Выполнение дополнительных действий при автосохранении
  // ...
  return $response;
}
add_filter( 'heartbeat_autosave', 'my_custom_action', 10, 2 );

Как обработать ошибку при автосохранении с помощью функции heartbeat_autosave()?

Функция heartbeat_autosave() также позволяет обрабатывать ошибки, возникающие при автосохранении.

Для этого необходимо вернуть массив с ошибкой в ответе от Heartbeat.

Пример использования функции heartbeat_autosave() для обработки ошибки при автосохранении:


function my_error_handling( $response, $data ) {
  // Проверка на наличие ошибки
  if ( isset( $data['error'] ) ) {
    // Обработка ошибки
    $response['error'] = 'Произошла ошибка при автосохранении.';
  }
  return $response;
}
add_filter( 'heartbeat_autosave', 'my_error_handling', 10, 2 );

Функция heartbeat_autosave() в WordPress позволяет сохранять дополнительные поля формы, выполнять дополнительные действия при автосохранении и обрабатывать ошибки, возникающие при автосохранении. Это полезный инструмент для WEB-разработчиков WordPress, позволяющий улучшить работу с формами и обеспечить более гибкую обработку данных.

Связанные элементы

  • Функция wp_ajax_heartbeat(): обрабатывает запросы на сервер, связанные с Heartbeat API.
  • Функция wp_set_comment_status(): устанавливает статус комментария.
  • Функция wp_ajax_send_attachment_to_editor(): отправляет в редактор выбранное вложение.
  • Функция wp_ajax_get_revision_diffs(): возвращает разницу между двумя ревизиями записи.
  • Хук heartbeat_received: вызывается при получении ответа от сервера после отправки запроса через Heartbeat API.
  • Хук wp_check_post_lock_window: определяет время блокировки записи при редактировании.
  • Хук heartbeat_nopriv_received: вызывается при получении ответа от сервера после отправки запроса через Heartbeat API для неавторизованных пользователей.
  • Класс WP_Customize_Manager: управляет настройками пользовательского интерфейса.
  • Класс WP_Customize_Setting: представляет настройку пользовательского интерфейса.
Обсуждение