is_wp_error()

Проверяет переданную в неё переменную на то, является ли она ошибкой WordPress, а именно объектом класса WP_Error.

Вообще, объект WP_Error могут возвращать многие функции WordPress в случае неудавшегося их выполнения, например, если при регистрации пользователя функцией wp_insert_user() был использован уже зарегистрированный на сайте email, или же, при попытке получения терминов поста функцией wp_get_post_terms(), мы передали в неё по ошибке несуществующую таксономию.

is_wp_error( $thing )

Параметры

$thing
(целое|строка|массив|объект) Какая-то переменная, которую мы хотим проверить.

Примеры

К примеру мы можем взять ту же самую функцию wp_get_post_terms(), о которой я упомянул в начале поста и попробуем передать в неё левую таксономию.

$terms = wp_get_post_terms( 5, 'nonexistingtaxonomy' );
 
// это условие выполнится, потому что мы заранее знаем, что таксономии не существует
if( is_wp_error( $terms ) ) {
	// а тут например мы можем вывести текст ошибки, используя метод get_error_message() класса WP_Error
	echo $terms->get_error_message();
}

Хуки

is_wp_error_instance

С версии WordPress 5.6.0.

Внутри функции есть хук действия is_wp_error_instance, который срабатывает в том случае, если переданная в функцию переменная действительно является ошибкой WP_Error.

do_action( 'is_wp_error_instance', $thing );
$thing
(целое|строка|массив|объект) Переменная, проверяемая функцией, которая, мы теперь уже знаем, является объектом класса WP_Error.

В качестве примера использования этого хука, мы можем отправить email администратору сайта функцией wp_mail() при срабатывании ошибки с определённым кодом.

add_action( 'is_wp_error_instance', 'true_notify_about_wp_error', 25 );
 
function true_notify_about_wp_error( $thing ) {
 
	if( 'true_security_alert' === $thing->get_error_code() ) {
		wp_mail( get_option( 'admin_email' ), 'Сработала защита', print_r( $thing, true ) );
	}
}

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код меньше одной строчки, то можно и в <code></code>.

Нажав на кнопку, вы соглашаетесь с тем, как обрабатываются персональные данные.