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=""
とします。