Функция wp_send_json_success()
используется для отправки JSON-ответа с подтверждением успешного выполнения запроса, обычно в AJAX-вызовах. Ответ будет содержать ключ success
со значением true
, а также любые переданные данные в параметре data
. Эта функция сразу завершает выполнение PHP-скрипта (с помощью die
), поэтому после ее вызова код не продолжает выполняться.
Часто используется в WordPress-плагинах и темах, чтобы ответить на AJAX-запрос с успешным статусом и данными, если это необходимо. Для передачи ошибки в ответе следует использовать аналогичную функцию wp_send_json_error()
.
wp_send_json_success( mixed $data = null, int $status_code = null, int $options = 0 )
Параметры
$data
(смешанный) – Необязательный. Данные для включения в ответ, которые будут закодированы в JSON. Может быть строкой, массивом, числом, объектом и т.д.
По умолчанию:null
$status_code
(целое число) – Необязательный. HTTP-статус ответа.
По умолчанию:null
$options
(целое число) – Необязательный. Дополнительные параметры для функцииjson_encode()
. Поддерживает различные JSON константы, такие какJSON_PRETTY_PRINT
,JSON_UNESCAPED_UNICODE
и другие.
По умолчанию:0
Пример 1: Простой AJAX-ответ с сообщением об успешном сохранении
Код JavaScript для отправки AJAX-запроса и обработки ответа:
jQuery(document).ready(function($) {
$('#btn_save').on('click', function(e) {
e.preventDefault();
$.post(
ajaxurl, // Обычно используется ajaxurl для AJAX-запросов в WordPress
{ action: 'save_data', field_value: $('#input_field').val() },
function(response) {
if (response.success) {
alert(response.data.message); // Выводим сообщение из ответа
} else {
alert('Ошибка: ' + response.data);
}
}
);
});
});
PHP-код, обрабатывающий AJAX-запрос и возвращающий JSON-ответ с помощью wp_send_json_success()
:
add_action('wp_ajax_save_data', 'handle_save_data');
function handle_save_data() {
// Проверяем входные данные, сохраняем или обрабатываем их...
$response = [
'message' => 'Данные успешно сохранены!',
'id' => 101
];
wp_send_json_success($response);
}
Результат: В случае успешной обработки, клиентская сторона получит JSON с success: true
и сообщением: Данные успешно сохранены!
.
Пример 2: Отправка дополнительных данных в ответе
При работе с AJAX-запросом можно отправить не только сообщение, но и дополнительные данные, которые могут быть полезны клиенту.
function send_extended_success_response() {
$data = [
'username' => 'JohnDoe',
'role' => 'administrator',
'timestamp' => current_time('Y-m-d H:i:s')
];
wp_send_json_success($data, 200, JSON_UNESCAPED_UNICODE);
}
Результат: Ответ содержит расширенные данные, включая имя пользователя, его роль и временную метку, с кодировкой Unicode, чтобы поддерживать любые символы.
Пример 3: Использование статуса и опций JSON
Функция wp_send_json_success()
поддерживает указание кода состояния HTTP и дополнительных опций для json_encode()
, что может быть полезно для более гибкого ответа.
function custom_status_response() {
$data = [
'status' => 'completed',
'task_id' => 456
];
// JSON_PRETTY_PRINT для читаемого формата JSON, HTTP статус 201 (Created)
wp_send_json_success($data, 201, JSON_PRETTY_PRINT);
}
Ответ будет иметь статус 201 Created
и содержать отформатированный JSON, что особенно полезно для отладки.
Пример 4: Ответ с пустым data
Если данные для отправки отсутствуют, wp_send_json_success()
все равно отправит JSON с success: true
, указывая на успешную обработку.
function empty_data_success_response() {
wp_send_json_success();
}
Результат: { "success": true }
, указывая клиенту на успешное выполнение запроса без дополнительных данных.
Заключение
Функция wp_send_json_success()
— это удобный способ отправки JSON-ответов в AJAX-запросах в WordPress. Она облегчает передачу успешного статуса вместе с любыми дополнительными данными, завершает выполнение скрипта, а также позволяет задавать HTTP-статус и настройки JSON-кодировки, что делает её гибкой для различных сценариев.