WordPress にログインしている状態の際に簡単にログアウトできる URL を出力してくれる関数が wp_logout_url()
です。
wp_loginout()
関数は、ログインしていない状態であればログイン URL を、ログインしている状態であればログアウト URL を出力してくれる関数でした。そのログアウトの URL だけバージョンみたいな感じでしょうか。
ここでは、その wp_logout_url()
について詳しく紹介していきます。
wp_logout_url() とは
ログアウト URL を取得します。出力まではしないので、echo
で出力してあげる必要があります。
内部で wp_nouce_url()
の esc_html()
でエンコードされた値が返ってきます。
パラメーター
$redirect | ログアウトした後にリダイレクトする URL |
使い方
基本的な使い方としては、単純に echo
でログアウト URL を出力する方法になります。
echo '<a href="' . wp_logout_url() . '">ログアウト</a>';
このようにアンカーリンクの URL として利用するのが一般的かと思います。
しかし、これだとログインしていない人(=ログアウトしている人)にも表示されてしまうので、ちょっと変ですよね。そういう場合は、ログインしている人にしか見せないように分岐すると良いでしょう。
if ( is_user_logged_in() ) {
echo '<a href="' . wp_logout_url() . '">ログアウト</a>';
}
また、ログアウトした後にリダイレクトしたいパスを指定することもできます。以下のようにすることで、ウェブサイトのホームページへリダイレクトすることができます。
if ( is_user_logged_in() ) {
echo '<a href="' . wp_logout_url( home_url() ) . '">ログアウト</a>';
}
home_url()
ではなく get_permalink()
にすることで、ログアウトしたタイミングで表示していたページを再表示することもできます。
if ( is_user_logged_in() ) {
echo '<a href="' . wp_logout_url( get_permalink() ) . '">ログアウト</a>';
}
フック
logout_url
apply_filters( ‘logout_url’, string $logout_url, string $redirect )
ログアウト URL にフィルターすることができます。
第一引数では $logout_url
で URL を、第二引数では $redirect
でリダイレクト先のパスを取得できるので、そちらを動的に変更することもできますね。
こちらのソースコードで動きを確かめてみてください。
add_filter(
'logout_url',
function ( $logout_url, $redirect ) {
echo '<hr>' . basename(__FILE__) . ' :: ' . __LINE__;
echo( '<pre>' );
var_dump( $logout_url, $redirect );
echo( '</pre>' );
echo '<hr>';
},
10,
2
);
まとめ
別記事で紹介している wp_login_url()
関数と一緒に使うことが多いと思いますが、それぞれの特徴やフックの動作を把握しておくと、設計の段階から役に立つと思いますので、ぜひコードを触りながら遊んでみてください。