WordPressでWebサイトを作成後、納品時にログイン画面のURLを伝えると、「ログインのボタンかリンクをどこかに入れてくれませんか」と言われることがあります。
WordPress標準の「メタ情報」ウィジェットは、[ログイン] 以外に [投稿の RSS] [コメントの RSS] [WordPress.org] といった項目も表示されて使いにくいし、かといってテキストウィジェットに <a href="…/wp-login.php">ログイン</a> などと書くのもスマートでない気がするので、テンプレートタグ wp_loginout() を使っています。
ショートコード例 その1
シンプルなショートコードの例です。単純に [ログイン] リンクを表示するだけですが、ログイン中は [ログアウト] リンクに変わります。
add_shortcode( 'my_loginout', function() {
return wp_loginout( '', false );
} );
テキスト ウィジェットやカスタム HTML ウィジェットでショートコードが有効にならないようなら、下記のおまじないも追加します。(と書きつつ、ふと気づくとテキスト ウィジェットではデフォルトでショートコードが機能しています。以前はそうでなかった気がするのですが、どこかのバージョンから仕様が変わったのでしょうか…)
add_filter( 'widget_text', 'do_shortcode' );
ショートコード例 その2
wp_loginout()は、第1引数でリダイレクト先URLを指定できるので、ショートコードでも指定できるようにしてみます。
function my_loginout_func( $atts ) {
$atts = shortcode_atts( array(
'redirect' => $_SERVER['REQUEST_URI'],
), $atts );
return wp_loginout( $atts['redirect'], false );
}
add_shortcode( 'my_loginout', 'my_loginout_func' );
ショートコード内で redirect属性でURLを指定すれば、ログイン後にそのURLのページを開きます。redirectを指定しないと、ログインリンクをクリックしたときのページになります。リダイレクトしたくないときは redirect="" とします。
