wp_send_json_error()
Повертає дані JSON. Використовується для повернення помилок в запитах AJAX. Відповідь завжди міститиме елемент success=false . Обриває роботу PHP скрипта (die).
Функція також встановлює header заголовок та обриває роботу PHP скрипта через die() :
@header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
Просто виклик wp_send_json_error() не встановить відповіді помилки – замість неї повернеться 200 . Тому, якщо потрібно вказати, що AJAX запит провалився, обов’язково вкажіть код помилки, наприклад 500, у параметрі $status_code.
З версії 4.1. Якщо параметр $data передати об’єкт WP_Error , він буде оброблений і функція поверне масив з повідомленням про помилку. Тобто. функція розуміє переданий WP_Error об’єкт.
wp_send_json_success() – протилежна цій функції. Повертає успішну відповідь.
wp_send_json()
Хуків немає.
Повертає
null
. Виводить на екран дані та обриває роботу php.
// Вид даних, що повертаються, перед кодуванням в JSON: array( 'success' => false ); array( 'success' => false, 'data' => $data ); // якщо вказано $data
Використання
wp_send_json_error( $data, $status_code, $options );
-
$data
(рядок/масив/число/об’єкт/логічний) -
Дані, які будуть додані в результат до елементу масиву data, перед кодуванням у JSON.
Типово: null -
$status_code
(число) -
HTTP статус код, який потрібно встановити. Які бувають статус коди,
дивіться тут . C WP 4.7.
Типово: null -
$options
(число) (WP 5.6) Опції, які будуть передані в функцію json_encode() . Бітова маска, що складається із значень:
JSON_FORCE_OBJECT JSON_HEX_QUOT JSON_HEX_TAG JSON_HEX_AMP JSON_HEX_APOS JSON_INVALID_UTF8_IGNORE JSON_INVALID_UTF8_SUBSTITUTE JSON_NUMERIC_CHECK JSON_PARTIAL_OUTPUT_ON_ERROR JSON_PRESERVE_ZERO_FRACTION JSON_PRETTY_PRINT JSON_UNESCAPED_LINE_TERMINATORS JSON_UNESCAPED_SLASHES JSON_UNESCAPED_UNICODE JSON_THROW_ON_ERROR
Сенс цих констант пояснюється на сторінці JSON констант .
За замовчуванням: 0
Приклади
#1 Повернення помилки в JSON форматі при AJAX відповіді
Цей jQuery код відправляє AJAX запит на сторінку плагіна ajax/save_field.php
:
fetch( `${ pluginUrl }/ajax/save_field.php` ) .then( resp => resp.json() ) .then(res => { if(res.success) { alert(res.data) } // error else { alert(res.data) } } )
Це код файлу save_field.php
, який обробляє надісланий запит. Тут показано, як повертати помилки:
<?php $nonce = $_POST['_wpnonce_name']; // print json given success=false if ( empty( $_POST ) || ! wp_verify_nonce( $nonce, 'my-nonce' ) ) { wp_send_json_error( 'Error messege'); } // it is not necessary to use die here wp_send_json_success( 'OK message');
#2 Передача WP_Error в $data
У $data можна передати об’єкт WP_Error .
$error = new WP_Error( 'error_code', 'ERROR: Wrong credentials.' ); wp_send_json_error( $error );
Тепер при отриманні даних у JS відповідь (response) буде містити масив всіх помилок у такому вигляді (зазвичай там лише один елемент):
{ success: false, data: [ 0: { code: 'error_code', message: 'ERROR: Wrong credentials.' } ] }
Тобто. Сповіщення про помилку можна отримати так:
response.data[0].message
список змін
З версії 3.5.0 | Введено. |
З версії 4.1.0 | У $data parameter is now processed if a WP_Error object is passed in . |
З версії 4.7.0 | $status_code parameter був added. |
З версії 5.6.0 | The $options parameter був added. |