Предотвращение перенаправления wp_login_form() в wp-admin при ошибках

9 авг. 2012 г., 02:51:09
Просмотры: 21.6K
Голосов: 9

Я создал форму входа на фронтенде сайта с помощью wp_login_form(). Однако когда пользователь вводит неправильное имя пользователя/пароль, его перенаправляет на форму входа wp-admin.

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

Я пробовал использовать хук redirect_invalid_login(), но это, похоже, не работает?

2
Комментарии

Думаю, этот вопрос уже был рассмотрен здесь: http://wordpress.stackexchange.com/questions/15633/how-can-i-redirect-user-after-entering-wrong-passowrd

Wyck Wyck
9 авг. 2012 г. 03:02:09

А также в этом вопросе: http://wordpress.stackexchange.com/questions/14692/check-for-correct-username-on-custom-login-form

fdsa fdsa
9 авг. 2012 г. 05:12:01
Все ответы на вопрос 2
3
17

Просто добавьте следующий код в ваш файл function.php. Он будет перенаправлять пользователя обратно на страницу, с которой была отправлена форма входа.

add_action( 'wp_login_failed', 'my_front_end_login_fail' );  // хуки для неудачного входа

function my_front_end_login_fail( $username ) {
   $referrer = $_SERVER['HTTP_REFERER'];  // откуда пришёл запрос на вход?
   // если есть валидный реферер и это не стандартный экран входа
   if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
      wp_redirect( $referrer . '?login=failed' );  // добавляем параметр (login=failed) к URL для использования в теме
      exit;
   }
}
5 февр. 2013 г. 07:48:08
Комментарии

как мы можем получать ошибки типа неверный пароль или неверное имя пользователя и т.д...???

vrajesh vrajesh
26 июн. 2015 г. 09:29:16

Лучшей практикой является показ не конкретной ошибки, а чего-то вроде "неверные учетные данные". Показ "неверный пароль" означает, что пользователь существует на этом сайте, и это на одну вещь меньше для угадывания (а само знание того, что email зарегистрирован на каком-то сайте, может быть проблемой конфиденциальности). Если вы показываете "неверный пароль", то это означает, что какой-то пользователь на этом сайте использует этот пароль, что не идеально. А чтобы получить информацию о том, что произошла ошибка, вы можете проверить, если $_GET['login'] == 'failed'.

idFlood idFlood
30 нояб. 2018 г. 18:05:33

Я не фанат function.php/theme.php, но это сработало. Может быть, я хочу добавить php-сниппет в шаблон header файла в elementor, но никто так не делает.

powdered_bread powdered_bread
14 сент. 2023 г. 03:09:40
0
-1

Ты знаешь, что это исправляет проблему, но всё равно ломается, если не вводить никаких данных.

Мне очень не нравится использовать functions.php.

Хотелось бы что-то вроде index.php, но по каким-то причинам это пока невозможно. Нужно более элегантное решение.

Форма входа "Essentials Addons" для Elementor, кажется, исправляет все проблемы, если ты используешь Elementor. Это единственное, что действительно работает как надо. Хорошо, что она бесплатная.

14 сент. 2023 г. 22:20:58