WordPressの自作ログインフォームを空白にすると思い通りにリダイレクトされない件(wp_login_failedフック)
会員制サイトを作るとき、WordPressっぽさを殺したくてログインフォームを自作するひとは多いと思う。
<form method="post" action="<?php echo wp_login_url(site_url('/login/')) ?>">
</form>
とかしてログインフォーム作って、ユーザーがログイン情報間違えたときのために
add_action('wp_login_failed', 'my_login_failed');
function my_login_failed() {
wp_redirect('/login/?status=failed');
exit;
}
みたいなものを追加して、さぁOK!って思ってたら…
空白でログインすると純正のログイン画面へ飛ばされる
まじか…
空白にしたままログインするとwp_login_failedのアクションフック引っかからない。
ということで、wp_authenticateというアクションフックを使って空白の情報が送られてきたときの条件を分岐
解決策(?)
add_action('wp_authenticate', 'empty_login', 1, 2);
function empty_login ($username, $pwd) {
if (empty($username) || empty($pwd)) {
wp_redirect('/login/?status=failed');
exit();
}
}
これで、空白の情報が送られてきたときに"/login/?status=failed" にリダイレクトされる。
と、ここらへんで、そもそもログイン情報両方埋めないとsubmitできないようにすればいいんじゃないかという事に気づいた…
どっちがいいんだろー!