Функция wp_is_json_request()
в WordPress используется для определения того, является ли текущий запрос JSON-запросом или ожидает JSON-ответ. Это полезно, когда необходимо обрабатывать данные, отправляемые в формате JSON, например, в AJAX-запросах или API.
wp_is_json_request(): bool
Возвращаемое значение
- true — если заголовки
Accept
илиContent-Type
содержатapplication/json
. - false — если это не так.
Описание работы функции
Функция проверяет заголовки HTTP текущего запроса, чтобы определить, ожидает ли он данные в формате JSON. Проверяются два условия:
- Содержится ли строка
application/json
в заголовкеAccept
. - Сравнивается заголовок
Content-Type
сapplication/json
.
Если хотя бы одно из этих условий истинно, функция возвращает true
.
Пример 1: Возврат JSON-данных при соответствующем запросе
В этом примере мы проверяем, ожидает ли текущий запрос ответ в формате JSON. Если да, то возвращаем данные в формате JSON, иначе — в формате сериализации:
$data = ['foo' => 'bar'];
if (wp_is_json_request()) {
// Если запрос ожидает JSON, возвращаем данные в формате JSON
echo json_encode($data);
} else {
// В противном случае сериализуем данные
echo serialize($data);
}
Этот код может быть полезен в API или при обработке AJAX-запросов, где клиент ожидает данные в формате JSON.
Пример 2: Обработка разных типов запросов
Вы можете использовать wp_is_json_request()
для обработки разных типов запросов и формирования различных ответов в зависимости от типа данных, которые ожидает клиент:
if (wp_is_json_request()) {
// Если запрос ожидает JSON, отправляем успешный ответ
$response = ['success' => true, 'message' => 'Данные успешно обработаны.'];
echo json_encode($response);
} else {
// Если запрос не JSON, отправляем обычный текстовый ответ
echo 'Данные успешно обработаны.';
}
Пример 3: Валидация входящих данных
Эта функция также может быть использована для проверки, соответствует ли входящий JSON-запрос ожидаемым стандартам. Например, вы можете проверять данные, прежде чем обрабатывать их:
if (wp_is_json_request()) {
$input_data = json_decode(file_get_contents('php://input'), true);
if (json_last_error() === JSON_ERROR_NONE) {
// Обработка корректного JSON
// ...
echo json_encode(['status' => 'success', 'data' => $input_data]);
} else {
// Возврат ошибки
echo json_encode(['status' => 'error', 'message' => 'Некорректный JSON.']);
}
} else {
echo 'Запрос не является JSON.';
}
Заключение
Функция wp_is_json_request()
является мощным инструментом для работы с JSON-запросами в WordPress. Она позволяет легко определить, требует ли текущий запрос обработки JSON-данных, что значительно упрощает разработку API и обработку AJAX-запросов.