Intereting Posts
Не получать письма из моей контактной формы WordPress нет темы или редактора в меню внешнего вида Как включить комментарии только для последней страницы разбитого на страницы сообщения? Когда WordPress переключил требования на php7? Изменить постоянную ссылку автора на внешний URL Как я могу использовать статический (ish) URL для отображаемого изображения для сообщения? Как WordPress определяет, слишком ли высок поисковый запрос var? Shortcode, Concatenating & Parse error: ошибка синтаксиса, неожиданный T_FOREACH Использование Bootstrap nav на странице Как перенаправить нового пользователя WordPress на предыдущую страницу после регистрации VideoJS в виджете? Несколько боковых панелей для нескольких страниц Добавить кнопку в редактор tinyMCE в пользовательском типе сообщения применить пользовательский вариант, где по умолчанию используется $ wp_query Настройка активного элемента Nav (из страниц), когда вы находитесь в сообщении с категорией

Действие wp_login_failed не работает, если заполнено только одно поле

Я создал форму входа в интерфейсе с помощью wp_login_form() . В моем файле functions.php я добавил действие, чтобы предотвратить перенаправление на /wp-login.php, если сбой входа

add_action ('wp_login_failed', ….

Как оказалось, действие только перехватывает, если поля имени пользователя и пароля заполнены. Если один из них оставлен пустым, я все равно перенаправляюсь на wp-login.php.

Есть ли возможность проверить, заполнены ли оба поля для предотвращения перенаправления?

благодаря

юлианский

Добавьте этот фильтр, чтобы изменить способ использования пустого имени пользователя / пароля:

 add_filter( 'authenticate', 'custom_authenticate_username_password', 30, 3); function custom_authenticate_username_password( $user, $username, $password ) { if ( is_a($user, 'WP_User') ) { return $user; } if ( empty($username) || empty($password) ) { $error = new WP_Error(); $user = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.')); return $error; } } 

И тогда ваша первоначальная переадресация на wp_login_failed будет работать с пустым именем пользователя и паролем.

Проблема заключается в функции wp_authenticate() (найденной в файле pluggable.php )

У вас есть 3 варианта.

  • взломать ядро ​​wordpress (не рекомендуется!)
  • напишите свой собственный плагин, который переопределяет wp_authenticate() (это просто удаление нескольких символов в инструкции if ).
  • используйте плагин (на самом деле не стоит плагин имени), я написал. WP-Логин-failer