ログインユーザーのみ閲覧できるコンテンツを表示する方法
WordPressでログインユーザーだけが見られるコンテンツを作りたい場合、PHPを少し書くだけで実現できます。会員制サイト・社内サイト・限定資料ページなどでよく使われる手法です。
1 PHPでログイン状態を判定する方法
WordPressには、ユーザーがログインしているかを判定できる便利な関数 is_user_logged_in() があります。それを記事本文中で [login_content] ショートコードとして使用できるようにします。
function only_login_user_content( $atts, $content = null ) {
// 属性をサニタイズ(将来拡張に備えて)
$atts = shortcode_atts( array(), $atts, 'login_content' );
if ( is_user_logged_in() ) {
// ログインユーザーには本文を安全に出力(HTML許可)
return wp_kses_post( do_shortcode( $content ) );
} else {
// 未ログインユーザーには安全なメッセージ(HTML非許可)
return '' . esc_html__( 'このコンテンツを閲覧するにはログインが必要です。', 'text-domain' ) . '
';
}
}
add_shortcode( 'login_content', 'only_login_user_content' );
投稿や固定ページの本文に次のように書けばOKです:
[login_content]
ここにログインユーザー限定で見せたい内容を書く
[/login_content]
2 まとめ
is_user_logged_in()でログイン状態を判定できる- ショートコード化すると記事内でも簡単に使える
これで、「ログインユーザーだけが見られるWordPressページ」を簡単に作ることができます。


