Изменение сообщений об ошибках при входе

5 авг. 2011 г., 23:03:22
Просмотры: 35.5K
Голосов: 21

Я просмотрел вопросы, но не смог найти похожего.

Мне нужно изменить пользовательские сообщения об ошибках, которые отображаются, когда пользователь пытается войти с неправильным именем пользователя или паролем.

Например, изменить это: "ОШИБКА: Пароль, который вы ввели для имени пользователя %1$s, неверный. Забыли пароль?" на "Неверные данные" (просто пример)

Я пытался использовать "add_filter", но я не очень знаком с ним, поэтому буду благодарен за любую помощь! Спасибо

Вы можете использовать следующий код в файле functions.php вашей темы:

add_filter('login_errors', 'custom_login_error_messages');

function custom_login_error_messages($error) {
    // Замена стандартного сообщения об ошибке
    $error = "Неверные данные для входа";
    return $error;
}

Или более детальный вариант с разными сообщениями для разных ошибок:

add_filter('login_errors', 'custom_login_error_messages');

function custom_login_error_messages($error) {
    global $errors;
    
    $err_codes = $errors->get_error_codes();
    
    // Проверяем различные типы ошибок
    if (in_array('invalid_username', $err_codes)) {
        $error = "Указанное имя пользователя не существует";
    } elseif (in_array('incorrect_password', $err_codes)) {
        $error = "Введен неверный пароль";
    } elseif (in_array('empty_username', $err_codes)) {
        $error = "Поле имени пользователя пустое";
    } elseif (in_array('empty_password', $err_codes)) {
        $error = "Поле пароля пустое";
    }
    
    return $error;
}
1
Комментарии

Если это имеет значение, комментарий выше от пользователя user20986 — это спам. Он ведёт на страницу, которая сообщает, что ваше flash-программное обеспечение устарело и нуждается в обновлении. Рекомендую администраторам удалить комментарий пользователя user20986.

leromt leromt
30 янв. 2019 г. 17:07:09
Все ответы на вопрос 1
6
24

это можно сделать с помощью хука фильтра login_errors, вот как:

add_filter('login_errors','login_error_message');

function login_error_message($error){
    //проверяем, является ли это ошибкой, которую мы ищем
    $pos = strpos($error, 'incorrect');
    if (is_int($pos)) {
        //это нужная ошибка, поэтому мы можем перезаписать её
        $error = "Неверная информация";
    }
    return $error;
}

обновление:

я только что протестировал код, и он работает отлично, просто вставил код в файл functions.php своей темы без каких-либо изменений в .po файле

скриншот результата работы кода

6 авг. 2011 г. 00:59:18
Комментарии

Просто чтобы все было понятно, мне нужно заменить 'incorrect' на строку с ошибкой? Кстати, спасибо за ответ!

Vitor Argos Vitor Argos
6 авг. 2011 г. 01:07:10

Только что попробовал таким способом, но это не работает, и я не уверен, перезаписывает ли .po файл WordPress текст. Есть идеи?

Vitor Argos Vitor Argos
6 авг. 2011 г. 01:10:55

текст из WordPress.po загружается до того, как срабатывает этот фильтр-хук, и нет, вам не нужно менять incorrect, он проверяет, содержит ли сообщение об ошибке это слово.

Bainternet Bainternet
6 авг. 2011 г. 01:15:51

Я попытался заставить это работать, но у меня не получилось. Я даже пробовал убрать условную часть, так что он должен возвращать текст из переменной $error, верно? Но это не дало никакого эффекта.

Изучая .po файл, я увидел, что сообщения, которые я хочу переопределить, находятся в файле wp-includes/user.php, например: "<strong>ОШИБКА</strong>: Поле имени пользователя пустое."

Vitor Argos Vitor Argos
6 авг. 2011 г. 01:37:06

@Vitor ты делаешь что-то не так, нет необходимости трогать .po файл, я обновил свой ответ.

Bainternet Bainternet
6 авг. 2011 г. 03:03:16

Пожалуйста, замените strpos на stripos, который не учитывает регистр; это важно, потому что сообщения об ошибках выглядят примерно так: "Ошибка: Неверное имя пользователя."

Marco Panichi Marco Panichi
9 июн. 2022 г. 13:10:40
Показать остальные 1 комментариев