【WordPress】ログインユーザーにだけ表示するコンテンツをショートコードで実装する方法

【WordPress】ログインユーザーにだけ表示するコンテンツをショートコードで実装する方法 WordPress

WordPressでは、ログインユーザーにのみ特定のコンテンツを表示したいというケースがあります。例えば、会員限定の情報や限定資料のリンクなどです。この記事では、ショートコードを使ってログインユーザーにだけ特定の内容を表示する方法を紹介します。

ショートコードの基本的な仕組み

ショートコードは、WordPress記事や固定ページ内で簡単に再利用可能な機能を挿入できる構文です。今回は、ログイン状態を判定し、ログインしている場合のみコンテンツを表示するショートコードを作成します。

functions.phpにショートコードを追加

まずは、以下のコードをテーマのfunctions.phpに追加します。

function shortcode_logged_in_only($atts, $content = null) {
  if (is_user_logged_in()) {
    return do_shortcode($content);
  } else {
    return '<p>このコンテンツはログインユーザー限定です。</p>';
  }
}
add_shortcode('member_only', 'shortcode_logged_in_only');

このショートコードは、ログインしていれば中のコンテンツを表示し、未ログインの場合はメッセージを表示します。

使い方の例

記事や固定ページ内で以下のようにショートコードを記述します。

[member_only]
このコンテンツはログインユーザーだけに表示されます。
[/member_only]

ログインしているユーザーには「このコンテンツはログインユーザーだけに表示されます。」というメッセージが表示され、未ログインのユーザーには「このコンテンツはログインユーザー限定です。」と表示されます。

応用:未ログインユーザー向けのカスタムメッセージ

ログインしていないユーザーにカスタムリンクやログインページへの誘導を表示したい場合は、次のように変更できます。

function shortcode_logged_in_only_custom($atts, $content = null) {
  if (is_user_logged_in()) {
    return do_shortcode($content);
  } else {
    return '<p>このコンテンツは会員限定です。<a href="' . wp_login_url() . '">ログインはこちら</a></p>';
  }
}
add_shortcode('member_only_custom', 'shortcode_logged_in_only_custom');

このようにすれば、未ログインユーザーをログインページにスムーズに誘導できます。

まとめ

ログインユーザー専用コンテンツの実装は、WordPress標準の関数is_user_logged_in()とショートコードを組み合わせることで簡単に実現可能です。シンプルながらも強力な方法で、会員制サイトや企業内ポータルなど幅広い用途に応用できます。

コンテンツ保護や限定公開機能をスマートに実装したい場合は、ぜひ活用してみてください。