WP_Error{}
Клас, завдання якого спростити обробку помилок (повідомлень) під час роботи з WordPress (створення плагінів, тем). Цей клас використовується для обробки помилок самим WordPress.
Для того, щоб розпочати роботу з класом, потрібно створити його екземпляр, а потім додавати або видаляти в нього помилки (повідомлення). Цей клас зручно використовувати не тільки для обробки помилок, але й для обробки простих повідомлень, наприклад: “Налаштування збережено”. Щоб перевірити, чи є будь-яка змінна PHP екземпляром класу WP_Error в WordPress є спеціальна функція is_wp_error() .
У параметрі $data (дані помилки) зазвичай записується опис помилки, де можна вказати як саме вирішити проблему. $message і $data це рядки і загалом вони схожі, але розробляться логікою: $message – повідомлення користувача і $data – повідомлення розробника.
Хуки із класу
Повертає
Нічого не вертає. Створює об’єкт.
Використання
// Пряме використання return new WP_Error( $code, $message, $data ); // додавання кількох помилок $errors = новий WP_Error; $errors->add( $code, $message, $data ); $errors->add( $code, $message, $data );
-  $code
 (рядок/число) (обов’язковий)
- Код помилки. Якщо вказати однакові коди для різних помилок, ці помилки будуть згруповані за цим кодом. Тобто. потім можна буде отримати всі помилки, що мають вказаний код.
-  $message
 (рядок) (обов’язковий)
- Повідомлення помилки.
-  $data
 (різне)
- Будь-які додаткові дані. Отримати ці дані можна буде пізніше за кодом. Дивіться методи - За замовчуванням: ” 
Приклади
#1 Виклик як функцію
$error = new WP_Error( 'error_key', 'Повідомлення помилки...', 404);
if( is_wp_error( $error ) ){
	echo $error->get_error_code(); //> error_key
	echo $error->get_error_message(); //> Повідомлення помилки...
	echo $error->get_error_data(); //> 404
}Коли функція повертає створений у ній екземпляр WP_Error, який перевіряється функцією is_wp_error() . За таким принципом, наприклад, працює функція WordPress wp_insert_post() – у разі помилки вона повертає об’єкт WP_Error , в якому міститься інформація про помилку(ах). Коротко такий підхід можна записати так:
function some_stuff( $some = false ){
	// Змінна $some має бути вказана
	if( ! $some )
		return new WP_Error('fallen', 'Він упав і стати не може');
	else
		return true;
}
// тепер викликаємо функцію, щоб вона повернула помилку
$ return = some_stuff();
// перевіряємо змінну наявність помилки
if( is_wp_error( $return ) ){
	// Виводимо повідомлення помилки
	echo $return->get_error_message(); // виведе 'Він упав і стати не може'
}У третьому параметрі $data можна передати будь-які дані. Але якщо помилка пов’язана із запитом, то WordPress у цьому параметрі прийнято передавати статус код відповіді. Наприклад, дивіться код функції wp_handle_comment_submission()
#2 Робота з об’єктом
Коли ми створюємо змінну з екземпляром класу WP_Error і потім працюємо з цією змінною, можна в іншому класі або іншій функції, групі функцій, де завгодно.
Наприклад, ми робимо форму зворотного зв’язку і нам потрібно обробляти помилки, у цьому випадку добре підійде екземпляр класу WP_Error . Наведу приклад створення екземпляра та додавання до нього помилок, та їх обробку:
// Створюємо екземпляр
global $form_error;
$form_error = новий WP_Error;
// Будь-яка функція, можливо в іншому файлі
function foo(){
	global $form_error;
	// якийсь код.
	// Перевірка поля
	if( empty( $email ) ){
		$form_error->add('no_email', 'Заповніть email');
	}
	elseif( ! is_email( $email ) ){
		$form_error->add('invalid_email', 'Некоректний email');
	}
	// Перевіряємо чи помилка обриваємо роботу функції
	if ( $form_error->get_error_code() )
		return; // виходимо далі роботу функції не продовжуємо через помилку
}
// Інший файл (не той, де функція foo() або той, не важливо) - файл де виводяться
// Повідомлення про помилки якщо такі є.
// Перевіряємо чи є помилка і виводимо всі повідомлення, якщо помилка
if ( $form_error->get_error_code() ) {
	foreach( $form_error->get_error_messages() as $error ){
		echo '<div><strong>Помилка</strong>:'. $error .'</div>';
	}
}#3 Який виглядає екземпляр класу?
Щоб являти собою об’єкт WP_Error , пропоную подивитися на нього в заповненому вигляді:
// створюємо екземпляр і відразу додаємо дані - метод add() $error = new WP_Error( 'fallen', 'Жук упав і стати не може.' ); // додамо ще дані об'єкт $error->add( 'help', 'Чекає він, хто йому допоможе.' ); /* $error містить WP_Error Object ( [errors] => Array ( [fallen] => Array ( [0] => Жук упав і встати не може. ) [help] => Array ( [0] => Чекає він, хто йому допоможе. ) ) [error_data] => Array ( ) ) */ // Додамо ще дані та вкажемо третій параметр $error->add( 'frost', 'Іній ліг на гілки ялини.', 'error' ); $error->add( 'white', 'Голки за ніч побіліли.', 'message' ); /* тепер $error містить WP_Error Object ( [errors] => Array ( [fallen] => Array ( [0] => Жук упав і встати не може. ) [help] => Array ( [0] => Чекає він, хто йому допоможе. ) [frost] => Array ( [0] => Іній ліг на гілки ялини. ) [white] => Array ( [0] => Голки за ніч побіліли. ) ) [error_data] => Array ( [frost] => error [white] => message ) ) */ $all_data = $error->get_all_error_data( 'white' ); /* $all_data містить: Array ( [0] => message ) */ $data = $error->get_error_data( 'white' ); /* $data містить: message */
Властивості класу
-  $errors
 (масив)
- Асоціативний масив, що містить перелік помилок. Де ключ – код помилки, а значення тексту – помилка.
-  $error_data
 (масив)
- Асоціативний масив, що містить список даних для вказаного в $ errors коду помилки.
Примітка: з версії 4.0, ці властивості класу мають видимість private, але завдяки чарівним методам їх як і раніше можна отримати публічно.
Методи класу
- public __construct( $code = ”, $message = ”, $data = ” )
- public add( $code, $message, $data = ” )
- public add_data( $data, $code = ” )
- protected static copy_errors( WP_Error $from, WP_Error $to )
- public export_to( WP_Error $error )
- public get_all_error_data( $code = ” )
- public get_error_code()
- public get_error_codes()
- public get_error_data( $code = ” )
- public get_error_message( $code = ” )
- public get_error_messages( $code = ” )
- public has_errors()
- public merge_from( WP_Error $error )
- public remove( $code )
- __construct( $code = ”, $message = ”, $data = ” )
-  Додає помилку об’єкт (код (ключ), текст, додаткові дані). Якщо параметр
 $code не встановлено, інші параметри будуть проігноровані. Якщо $code встановлено, то параметр $message буде використаний навіть якщо там порожній рядок, але параметр
 $data у цьому випадку, буде використаний тільки якщо він не порожній. За допомогою методу
 add() можна створювати кілька повідомлень під одним кодом.
- get_error_codes()
- Отримує всі ключі помилок. Доступ публічний повертає масив кодів помилок, якщо такі є.
- get_error_code()
- Отримує перший ключ помилки. Доступ до публічного, повертає рядок/число або порожній рядок, якщо кодів взагалі немає.
- get_error_messages( $code = ” )
- Отримує всі тексти помилок або всі тексти помилок під вказаним ключем. Доступ до публічного, повертає масив текстів помилок або порожній масив, якщо помилок немає.
- get_error_message( $code = ” )
- Отримує окреме повідомлення (текст) за переданим кодом (ключом) помилки. Якщо під ключом кілька повідомлень, то повернеться лише перше. Якщо параметр $code не передано, буде оброблений перший ключ.
- get_error_data( $code = ” )
- Отримує дані помилки за переданим ключем (кодом) помилки. Поверне значення (рядок/масив/булів) або null якщо даних немає.
- add($code, $message, $data = ”)
- Додає повідомлення до об’єкта (до списку помилок). Нічого не вертає.
- add_data( $data, $code = ” )
- Додає дані помилки (тексту) пов’язані із зазначеним ключем (кодом) помилки (тексту).
-  remove( $code )
 (WP 4.1)
- Видаляє помилку (повідомлення) з об’єкта за переданим ключем (кодом). Нічого не вертає.
-  has_errors()
 (WP 5.1)
- Повертає логічне значення, яке вказує на те, чи містить екземпляр помилки.
список змін
| З версії 2.1.0 | Введено. | 
