フロントエンドにwp_login_form()
を使ってログインフォームを作成しました。 functions.php ファイルに、ログインが失敗した場合に /wp-login.php へのリダイレクトを防ぐためのアクションを追加しました。
add_action( 'wp_login_failed'、….
username と password のフィールドが入力されている場合、アクションはフックするだけです。そのうちの1つが空のままでも、 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
にあります)にあります
2つの選択肢があります。
wp_authenticate()
をオーバーライドするあなた自身のプラグインを書いてください(これは単に if ステートメントの中の数文字を削除することです)。