2026年8月9日

2026年8月9日

WordPressのコンテンツをログイン状態で切り替える方法

はじめに

ここでは、WordPressサイト上で特定のコンテンツをログインユーザーのみに表示させることでセキュリティやユーザーエクスペリエンスを向上させる方法について説明します。これにより、非公開の記事やページ、特別なアクセス権限が必要な情報などを保護することが可能になります。

症状・背景

このテーマが必要になる主な場面:

  • 特定の記事やページをログインユーザーのみに表示する
  • サイト管理者だけが閲覧可能な管理用コンテンツを作成する
  • ユーザー登録後に提供される追加情報や機能を制限したい場合
  • 会員専用サイトで非公開の情報を保護する必要がある

手順・設定方法

ステップ1: フィルター関数を追加

# WordPressにフィルター関数を登録します。この関数は表示される記事の公開ステータスを変更します。
add_filter('the_posts', 'custom_login_content_toggle');

function custom_login_content_toggle($posts) {
    $current_user = wp_get_current_user();
    if ($current_user->ID > 0 && is_single()) { // ログインユーザーのみに表示
        foreach ($posts as &$post) {
            if ('private' == get_post_status($post)) { // 秘密の記事だけを表示
                $post = NULL;
            }
        }
    }
    return $posts;
}

ステップ2: テーマファイルへのCSSとJavaScript追加

# カスタムCSSをテーマのfunctions.phpに追加して、ログインユーザー向けに特定のスタイルを適用します。
function custom_login_css() {
    wp_enqueue_style('custom-login-css', get_template_directory_uri() . '/css/custom-login.css');
}
add_action('wp_enqueue_scripts', 'custom_login_css');

# JavaScriptを使ってログイン状態によるコンテンツの切り替えを行う
function custom_login_js() {
    wp_enqueue_script('custom-login-js', get_template_directory_uri() . '/js/custom-login.js', array(), null, true);
}
add_action('wp_enqueue_scripts', 'custom_login_js');

ステップ3: 特定ページでのみ表示を制限

# 特定のページでだけログインユーザーのみに表示されるようにするための関数を作成します。
function custom_restrict_content($atts) {
    $atts = shortcode_atts(array(
        'content' => '',
    ), $atts);
    
    if (is_user_logged_in()) { // ログインしている場合
        return '<div class="custom-logged-in">' . do_shortcode($atts['content']) . '</div>';
    } else { // 未ログインの場合
        return '<p>ログインしてください</p>';
    }
}
add_shortcode('restrict_content', 'custom_restrict_content');

ステップ4: ログイン状態によるCSSとJavaScriptの切り替え

# シングルページでログインユーザー向けにCSSを適用します。
function custom_single_page_css() {
    if (is_user_logged_in()) { // ユーザーがログインしている場合、カスタムCSSファイルを読み込みます
        wp_enqueue_style('custom-single-page-css', get_template_directory_uri() . '/css/custom-single.css');
    }
}
add_action('wp_enqueue_scripts', 'custom_single_page_css');

# JavaScriptを使ってログインユーザー向けに追加の機能を提供します。
function custom_addon_feature_js() {
    if (is_user_logged_in()) { // ユーザーがログインしている場合、カスタムJavaScriptファイルを読み込みます
        wp_enqueue_script('custom-addon-js', get_template_directory_uri() . '/js/custom-addon.js');
    }
}
add_action('wp_enqueue_scripts', 'custom_addon_feature_js');

注意事項

  • <実践的な注意点1>: コンテンツの公開ステータスを変更する前に必ずバックアップを作成してください。
  • <実践的な注意点2>: 一部ユーザーだけにアクセス権限を与える場合、そのユーザーのリストを管理することが重要です。
  • <セキュリティ上の注意>: ログイン状態によるコンテンツの表示制御は、サイト全体のセキュリティ戦略の一環として扱うべきです。
  • <パフォーマンス/運用上の注意>: 一部のユーザーにしかアクセスできないコンテンツが多い場合、サイトの負荷が増える可能性があります。

まとめ

1. フィルター関数: 特定の記事やページをログインユーザーのみに表示するために使用します。

2. カスタムCSSとJavaScript: ユーザーごとの視覚的エクスペリエンスや機能性を向上させます。

3. ショートコード: スクリプト内でのコンテンツ制御が容易になります。

4. 単一ページのカスタマイズ: 特定ページでログインユーザー向けに独自のスタイルと機能を提供します。

5. セキュリティとパフォーマンス: これらの設定は、サイトのセキュリティと効率的な運用を向上させます。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ