is_wp_error()

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Проверяет переданную в неё переменную на то, является ли она ошибкой 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 ) );
	}
}
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии