Проверяет переданную в неё переменную на то, является ли она ошибкой 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 ) ); } }
Источник: Блог Миши Рудрастых