乱暴な方法ですが・・・。
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の中身をデフォルトからカスタマイズしているので、ちょっと乱暴かも。
もっといい方法があればな〜。