LoginSignup
0
0

More than 5 years have passed since last update.

WordPress4.3で、ログイン失敗時のリダイレクトページを変更したい

Posted at

乱暴な方法ですが・・・。

WordPressを意識させたくないサイトを作りたい

BuddyPressつかっているんですけど、一般会員向けにはいかにもデフォルトですっていうログインページ見せたくないんですよねー。

ログイン失敗時に失敗的な処理を呼び出すことができる

add_action使って、「ログイン失敗時」の処理を呼び出しています。

ところが、これだけでは(少なくとも)WordPress4.3環境下ではうまく動きませんでした。

深刻な問題

上記のやり方だと、ユーザIDとパスワードの欄両方が入力されていないかぎり、リダイレクト処理ができませんでした。

つまり、ユーザID、パスワードのどちらかが入っていないと
例の見せたくないデフォルトのログインページにたどり着いてしまいます。

wp_login_failed のありか

フック wp_login_failedはどのタイミングで実行されるのでしょうか・・・?
実態は、wp-includes/pluggable.php の、デフォルトでは600行目あたり。

wp_authenticate 関数 内のかなり下の方

「エラーが発生し、かつユーザID、パスワードの欄がどちらも空でない」タイプの状態が発生したとき。です。

(強引に)ユーザID,パスワードが空のときの処理を記述する。

本音としては、あまりやりたくないですが・・・。
wp_authenticate関数の冒頭に



IDかパスワード、どちらか一つでも空なら判定対象外にして、

強制的にリダイレクト処理を呼び出す

if ( $username == null || $password == null ){
    $hoge = 'empty';
    do_action('wp_process1',$hoge );
}

とでも書いておいて

現在使用しているテーマのfunctions.phpに


add_action('wp_process1','wp_funtion_a');

#リダイレクト処理
#最低限の記述です。適宜改良してください。
function wp_funtion_a($hoge){
   $url=$_SERVER['HTTP_REFERER'];
   
     #リダイレクトURLが空でなければ、リファラーでリダイレクト
   if (!empty($url))
         wp_redirect($url);

}

wp_inculdesの中身をデフォルトからカスタマイズしているので、ちょっと乱暴かも。
もっといい方法があればな〜。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0