ログインフォームを表示して同じページにログインを処理したいのですが、ログインエラーがあると同じページにエラーメッセージが表示されます。
私はこの機能を追加しました:
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
フックを使うことでしょう。これは次のようになります。
add_action( 'wp_login_failed', 'my_login_fail' ); // hook failed login
function my_login_fail( $username ) {
//redirect to custom login page and append login error flag
wp_redirect(home_url( '?page_id=4' ) . "&login_error" );
exit;
}
明らかにあなたが使っているパーマリンクに応じてwp_redirect
を修正するべきです。
それからカスタムページテンプレートでlogin_errorフラグをチェックしてエラーメッセージを表示することができます。
if (isset($_GET['login_error'])){
//print error message or do something else
}