web-dev-qa-db-ja.com

エラーが発生したときに、wp_login_form()がwp-adminにリダイレクトしないようにします。

私は自分のサイトのフロントエンドにwp_login_form()を使ってログインフォームを作りました。ただし、ユーザーが間違ったユーザー名/パスワードを入力すると、wp-adminログインフォームにリダイレクトされます。

ログインフォームの上にエラーメッセージを表示するにはどうすればよいですか。理想的には、ユーザーにWordpressの管理者セクションを表示させる必要がないようにします。

私はredirect_invalid_login()フックを使ってみましたが、これはうまくいかないようですか?

6
slm_92

function.phpに次のコードを追加するだけです。ログインフォームが送信された場所からユーザーをリダイレクトします。

add_action( 'wp_login_failed', 'my_front_end_login_fail' );  // hook failed login

function my_front_end_login_fail( $username ) {
   $referrer = $_SERVER['HTTP_REFERER'];  // where did the post submission come from?
   // if there's a valid referrer, and it's not the default log-in screen
   if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
      wp_redirect( $referrer . '?login=failed' );  // let's append some information (login=failed) to the URL for the theme to use
      exit;
   }
}
11
noor