WordPress からログアウトする URL を出力する関数 wp_logout_url()
の記事をこちらに書きましたが、今回はそのログイン版とも言えるであろう、ログイン URL を出力する関数 wp_login_url()
を調べていきます。
wp_login_url() 関数とは
ログイン URL を取得します。wp_logout_url()
にとても似ていますね。しかし、返り値は HTML エンコードされていないことに注意が必要です。
パラメーター
$redirect | ログインした際のリダイレクト先へのパスを設定できます。しかし、 https://sample.com/mypage/ のような絶対値でなければなりません。 |
$force_reauth | クッキーが存在する場合でも、再認証するかどうかを設定できます |
使い方
基本的にはこのような形で使うことが多いでしょう。
echo '<a href="' . wp_login_url() . "\">ログイン</a>";
ログインしているユーザーに表示しても意味がないので、wp_logout_url()
の時と似た形で分岐すると良いでしょう。
if ( ! is_user_logged_in() ) {
echo '<a href="' . wp_login_url() . "\">ログイン</a>";
}
第一引数に URL を指定することで、ログインした後のリダイレクト先を指定することができます。
if ( ! is_user_logged_in() ) {
echo '<a href="' . wp_login_url( home_url( '/sample/')) . "\">ログイン</a>";
}
第二引数では、ブラウザでクッキーがログイン情報を記憶していても再認証するかどうかを指定することができます。再認証させるためには true
を指定します。デフォルトは false
です。
if ( ! is_user_logged_in() ) {
echo '<a href="' . wp_login_url( home_url( '/sample/' ), true ) . "\">ログイン</a>";
}
フック
login_url
apply_filters( ‘login_url’, string $login_url, string $redirect, bool $force_reauth )
ログイン URL にフィルターすることができます。
第一引数には $login_url
で URL を取得できます。第二引数では $redirect
でリダイレクト先を取得できます。第三引数には $force_reauth
でクッキーが存在していたも再認証するかどうかの設定を取得できます。
以下のソースコードで動作を確認できます。遊んでみてください。
add_filter(
'login_url',
function ( $login_url, $redirect, $force_reauth ) {
echo '<hr>' . basename(__FILE__) . ' :: ' . __LINE__;
echo( '<pre>' );
var_dump( $login_url, $redirect, $force_reauth );
echo( '</pre>' );
echo '<hr>';
},
10,
3
);
まとめ
多くのユーザーが参加するウェブサイトを WordPress で構築する際には、必ずと言っていいほどログインやログアウトへのアクセス方法を管理したくなります。
その際に、wp_login_url()
や wp_logout_url()
の挙動を知っておくだけで、スムーズな設計をすることができます。また、特徴やフックも触っておくことで、動的な管理をする際にも役立つでしょう。
ぜひ色々と遊んでみてください。