WordPress にログインするときには、WordPress が設置してある URL に /wp-admin
や /wp-login.php
を追加してアクセスすることで、ログイン画面にアクセスすることができます。
ログアウトの場合は、管理画面またはツールバーが表示されている場合もあるので(設定で非表示も可能)、右上から簡単にログアウトのメニューを選択することができます。
しかし、多くのメンバーが参加するウェブサイトを WordPress で構築する場合、誰もが分かる場所にログイン・ログアウトが可能な URL を設置しておくことで、便利で使いやすいウェブサイトにすることができます。
本記事では、そんな時に役立つであろう wp_loginout()
関数について紹介します。
wp_loginout() 関数とは
ログインしていない状態ではログイン画面へのリンクを、ログインしている時にはログアウトするためのリンクを表示します。ボタンではなくテキストリンクとして表示されます。
パラメーター
$redirect | ログイン/ログアウトした際のリダイレクト先を指定できる |
$display | 表示するかどうか true or false |
使い方
単純にリンクを設置したい場合には、以下のように記述します。
wp_loginout();
一つ目のパラメーターである $redirect
を使う場合、以下のように使うことができます。
wp_loginout( home_url( 'sample' ) );
この場合、ここで設置したリンクを経由してログイン/ログアウトした後に表示されるページは sample.com/sample
というページになります。WordPress をインストールした後に最初から用意されている固定ページのスラッグが sample
なので、それが表示されることになります。
二つ目のパラメーターである $display
は、このリンクを表示するかしないかを指示することができます。あまり静的な記述では効果を感じれないかも知れませんが、以下のように使うことができます。
wp_loginout( home_url( 'sample' ), false );
リンクを表示する前に何かしらの条件で真偽を出しておいて、それに応じてリンクを出すか出さないかを切り替えるという使い方ができそうですね。
例えば、日本語環境で利用されているユーザーのみリンクを表示する場合は、以下のように書くこともできます。
$locale = get_locale();
if ( 'ja' === $locale ) {
$display = true;
} else {
$display = false;
}
wp_loginout( home_url( 'sample' ), $display );
フック
loginout
apply_filters( ‘loginout’, string $link )
ログイン/ログアウトの出力されるHTMLリンクにフィルターできます。
以下のソースコードで確認することができます。
add_filter(
'loginout',
function( $link ) {
echo '<hr>' . basename(__FILE__) . ' :: ' . __LINE__;
echo( '<pre>' );
var_dump( $link );
echo( '</pre>' );
echo '<hr>';
exit;
},
10,
1
);
まとめ
カスタムメニューのメニューアイテムにフックで追加するという使い方も面白そうだなと記事を書いていて思いました。
特定のスタッフだけで運用している WordPress では、あまり利用することも少ないかもしれませんが、不特定多数のユーザーが集まることを想定されるウェブサイトでは、分かりやすいログイン/ログアウトのリンクを設置しておくことで、UX 向上にも繋がるかもしれませんね。
ぜひ試して遊んでみてください。