Standing on the Shoulder of Linus

Home / 2012 / 11月 / 07 / WordPress ログイン失敗時の処理を変更する

WordPress ログイン失敗時の処理を変更する

FuelPHP で WordPress のログイン機能を使うの続きです。

WordPress では、wp_login_form()関数が用意されていて、wp-login.php 以外の場所からログイン操作できるようになります。ログイン後、元のページに戻ることができます。しかし、ログイン失敗時には wp-login.php にリダイレクトされます。ログイン失敗時のリダイレクト先を変えることができないか?と調べてみました。

公式フォーラムの過去ログ Can you stop wp_login_form redirecting to wp-login on fail? に掲載されていました。元は How to Redirect WordPress Failed Logins かららしいです。

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?
	$redirect = 'http://127.0.0.1/index.php/welcome/login/failed'; // URL when login failed
	//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( $redirect );
		exit;
	}
}

WordPress のアクションフック機能を使って、ログイン失敗時の処理を変更することができました。(wp_login_failed フック自体は、wp-includes/pluggable.php にあります。ログイン処理をカスタマイズしている場合、上述のコードを記述しても希望する動作にならないかもしれません。)

FuelPHP 側では、失敗時の処理をするコントローラを追加します。(デフォルトの welcome.php に追加する場合です。)

	public function action_login($failed)
	{
		$view = View::forge('welcome/index');
		$loginform = wp_login_form(array('echo' => false));
		if ('failed' == $failed)
		{
			$loginform .= '<p>ログインに失敗しました</p>';
		}
		$view->set_safe('loginform',$loginform);
		return $view;
	}

Selenium でのテストコードです。 https://gist.github.com/4028788 FuelPHP を http:/127.0.0.1/ に、WordPress を http://127.0.0.1/wordpress にインストールした場合です。WordPress のユーザーアカウントは、ユーザー名 testuser1 パスワード testpass1 です。

関連

Posted in WordPress | Tagged fuelphp, selenium
← FuelPHP で WordPress のログイン機能を使う 関西オープンフォーラム2012 & DocFest2012 →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.