В стандартной установке WordPress сообщения об ошибках, например, при авторизации, регистрации или заполнении форм, выводятся в простом и не всегда информативном виде. Часто возникает необходимость изменить их оформление, текст или поведение, чтобы улучшить пользовательский опыт и сделать сайт более профессиональным.
Зачем менять сообщения об ошибках в WordPress
Причин для кастомизации сообщений об ошибках несколько:
- Улучшение UX: Полезные и понятные сообщения помогают пользователю быстрее исправить ошибку.
- Безопасность: Переформулирование ошибок снижает вероятность раскрытия внутренней информации сайта.
- Брендинг: Сообщения можно сделать в стиле сайта, чтобы сохранить единый дизайн.
- Локализация: Позволяет адаптировать тексты под целевую аудиторию.
Давайте рассмотрим, как это сделать технически.
Изменение сообщений об ошибках на странице входа и регистрации
Самые часто встречающиеся ошибки появляются при работе с формами входа и регистрации. WordPress использует класс WP_Error для хранения ошибок, а выводит их с помощью функции wp_login_errors() и фильтров.
Использование фильтра login_errors для изменения текста ошибок входа
Фильтр login_errors позволяет изменить любое сообщение, связанное с ошибками входа. Вот пример функции, которая заменит все ошибки на общее сообщение без деталей, что повышает безопасность:
function wppuzzle_login_error_message() {
return 'Ошибка входа: пожалуйста, проверьте ваши данные и попробуйте снова.';
}
add_filter('login_errors', 'wppuzzle_login_error_message');Этот код нужно добавить в файл functions.php вашей темы или в отдельный плагин.
Кастомизация сообщений при регистрации через register_post
При регистрации можно обработать ошибки через фильтр registration_errors. Например, добавим свое сообщение, если пользователь не указал email:
function wppuzzle_custom_registration_errors($errors, $sanitized_user_login, $user_email) {
if (empty($user_email)) {
$errors->add('empty_email', __('Пожалуйста, укажите адрес электронной почты.'));
}
return $errors;
}
add_filter('registration_errors', 'wppuzzle_custom_registration_errors', 10, 3);Таким образом, мы расширяем стандартные проверки и добавляем свои условия.
Использование плагинов для управления сообщениями об ошибках
Если хочется получить готовое решение с визуальной настройкой, обратите внимание на следующие плагины:
- Custom Login Error Messages — позволяет легко менять сообщения через админку.
- Clearfy Pro — комплексный плагин оптимизации и безопасности, включает функции по настройке ошибок и уведомлений.
Плагины помогут без кода быстро менять тексты, стили и даже логику вывода ошибок.
Кастомизация шаблонов вывода ошибок в теме
Если вы создаёте свою тему или дочернюю тему, можно изменить отображение ошибок на страницах:
- Создайте свой шаблон для страницы входа (например, с помощью
wp_login_form()). - Обрабатывайте вывод ошибок вручную, получая объект
WP_Errorиз фильтров. - Добавьте свои CSS-стили для ошибок, чтобы выделять их цветом и шрифтами.
Пример вывода ошибок в кастомной форме входа:
function wppuzzle_custom_login_form() {
$args = array(
'echo' => false,
);
$form = wp_login_form($args);
if ( isset($_GET['login']) && $_GET['login'] == 'failed' ) {
$form .= '<div class="wppuzzle-login-error">Неверный логин или пароль.</div>';
}
return $form;
}Затем вызовите echo wppuzzle_custom_login_form(); там, где нужно.
Изменение сообщений ошибок в REST API WordPress
Если вы создаёте REST API эндпоинты, нужно контролировать вывод ошибок через WP_Error с кастомными сообщениями:
function wppuzzle_rest_api_custom_error() {
return new WP_Error(
'wppuzzle_custom_error',
'Необходима авторизация для доступа к этому ресурсу.',
array('status' => 401)
);
}При использовании такого подхода клиенты API получат понятный ответ и смогут корректно отработать ошибку.
Советы по безопасности при кастомизации ошибок
Не стоит раскрывать в сообщениях подробности о причинах сбоев, это может помочь злоумышленникам. Например, не указывайте, что пользователь существует или нет — лучше использовать общие формулировки.
Используйте плагин Clearfy Pro для усиления защиты и контроля над ошибками.
Также рекомендуем стилизовать ошибки с помощью CSS, чтобы визуально выделять их, не мешая общей эстетике сайта.