Функция wp_die()
останавливает выполнение WordPress и отображает HTML-страницу с сообщением об ошибке. Она является аналогом стандартной PHP-функции die()
, но с выводом отформатированного HTML, что полезно для ошибок, которые нужно показать пользователю в удобном виде.
Функцию рекомендуется использовать только в тех случаях, когда выполнение кода действительно не должно продолжаться. Для более тонкой обработки ошибок стоит применять другие механизмы, например, вывод предупреждений или запись в лог.
wp_die( string|WP_Error $message = '', string|int $title = '', string|array|int $args = array() );
Параметры
- $message (строка | WP_Error): Сообщение об ошибке или объект
WP_Error
.
По умолчанию:''
. - $title (строка | число): Заголовок ошибки. Если передано целое число, оно интерпретируется как HTTP-код ответа.
По умолчанию:''
. - $args (строка | массив | число): Аргументы для контроля поведения. Если передано число, оно интерпретируется как HTTP-код ответа.
По умолчанию:array()
.
Аргументы $args
- response (int): HTTP-код ответа. По умолчанию
200
для Ajax-запросов и500
для других случаев. - link_url (string): URL ссылки, которая будет добавлена к сообщению. По умолчанию:
''
. - link_text (string): Текст ссылки. По умолчанию:
''
. - back_link (bool): Добавить ли ссылку «назад». По умолчанию:
false
. - text_direction (string): Направление текста,
'ltr'
или'rtl'
. По умолчанию используется значениеis_rtl()
. - charset (string): Кодировка вывода. По умолчанию:
'utf-8'
. - exit (bool): Прерывать ли выполнение после вывода. По умолчанию:
true
.
Простое использование wp_die()
wp_die( 'Произошла ошибка! Пожалуйста, попробуйте позже.' );
Этот код завершит выполнение скрипта и выведет сообщение «Произошла ошибка! Пожалуйста, попробуйте позже.» на HTML-странице.
Вывод объекта WP_Error
$error = new WP_Error( 'invalid_login', 'Неверный логин или пароль.' );
wp_die( $error );
Здесь функция выведет сообщение об ошибке, основанное на объекте WP_Error
.
Пример с использованием заголовка и HTTP-кода ответа
wp_die( 'Страница не найдена', 'Ошибка 404', array( 'response' => 404 ) );
Этот пример выведет сообщение «Страница не найдена» с заголовком «Ошибка 404» и установит HTTP-код ответа 404.
Добавление ссылки для возврата
wp_die( 'Произошла ошибка', '', array( 'back_link' => true ) );
Этот код добавит к сообщению об ошибке ссылку для возврата на предыдущую страницу.
Использование wp_die()
в фильтре для отладки
add_filter( 'body_class', 'add_body_class_callback' );
function add_body_class_callback( $classes ) {
global $post;
wp_die( '<pre>' . var_export( $post, true ) . '</pre>' );
}
Здесь функция используется для отображения содержимого глобальной переменной $post
на экране.
Стилизация сообщения через хук
Можно использовать фильтр wp_die_handler
, чтобы изменить вывод и стиль HTML, отображаемого при вызове wp_die()
.
Пример:
add_filter( 'wp_die_handler', function() {
return 'my_custom_wp_die_handler';
});
function my_custom_wp_die_handler( $message, $title = '', $args = array() ) {
// Создаем собственное сообщение об ошибке
echo '<h1>' . esc_html( $title ) . '</h1>';
echo '<p>' . esc_html( $message ) . '</p>';
die();
}
Этот код заменяет стандартный вывод функции wp_die()
на кастомное оформление.
Заключение
Функция wp_die()
полезна для обработки фатальных ошибок в WordPress, позволяя прекратить выполнение скрипта и вывести отформатированное сообщение для пользователя. Однако ее стоит применять с осторожностью и использовать более мягкие методы обработки ошибок, где это возможно.