Изменение сообщений об ошибках при входе
Я просмотрел вопросы, но не смог найти похожего.
Мне нужно изменить пользовательские сообщения об ошибках, которые отображаются, когда пользователь пытается войти с неправильным именем пользователя или паролем.
Например, изменить это: "ОШИБКА: Пароль, который вы ввели для имени пользователя %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;
}

это можно сделать с помощью хука фильтра 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 файле

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

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

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

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

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