2026年5月29日
2026年5月29日
WordPressで会員限定コンテンツを実装する方法・ログイン必須ページの設定
はじめに
「有料会員だけが読める記事を作りたい」「ログインユーザーのみコンテンツを表示したい」——WordPressの会員限定コンテンツは、条件分岐関数やプラグインを使って実装できます。シンプルな方法から本格的なメンバーシップまで解説します。
症状・原因
WordPressはデフォルトで全コンテンツを公開します。特定ユーザーのみアクセスできる会員限定エリアを作るには、is_user_logged_in()・current_user_can()などの条件分岐関数やリダイレクト処理が必要です。
解決手順
ステップ1:ログインユーザーのみコンテンツを表示する
// テンプレートファイルまたはショートコードでの条件分岐
if ( is_user_logged_in() ) {
echo '<p>会員限定コンテンツです。</p>';
echo '<p>ここに限定コンテンツを表示</p>';
} else {
echo '<p>このコンテンツはログインが必要です。</p>';
echo '<a href="' . wp_login_url( get_permalink() ) . '">ログインする</a>';
}
// ショートコードとして実装
add_shortcode( 'members_only', function( $atts, $content = '' ) {
if ( is_user_logged_in() ) {
return do_shortcode( $content );
}
return '<p class="login-required">このコンテンツはログインが必要です。'
. '<a href="' . wp_login_url( get_permalink() ) . '">ログイン</a></p>';
} );
// 使い方: [members_only]会員限定テキスト[/members_only]
ステップ2:特定ロール・権限を持つユーザーのみ表示する
// 管理者・編集者のみ表示
if ( current_user_can( 'edit_posts' ) ) {
echo '<p>編集者以上のみ表示されるコンテンツ</p>';
}
// 特定ロールかどうかを確認
function user_has_role( $role ) {
$user = wp_get_current_user();
return in_array( $role, (array) $user->roles );
}
// カスタムロール「premium」のみ表示
if ( user_has_role( 'premium' ) ) {
echo '<p>プレミアム会員専用コンテンツ</p>';
}
// 投稿全体をログイン必須にする(テンプレートリダイレクト)
add_action( 'template_redirect', function() {
// カスタム投稿タイプ「premium_post」はログイン必須
if ( is_singular( 'premium_post' ) && ! is_user_logged_in() ) {
wp_redirect( wp_login_url( get_permalink() ) );
exit;
}
} );
ステップ3:カテゴリ・タグ別にアクセス制限をかける
// 特定カテゴリの投稿はログイン必須
add_action( 'template_redirect', function() {
if ( ! is_singular( 'post' ) || is_user_logged_in() ) return;
$restricted_categories = [ 'members-only', 'premium' ]; // スラッグ指定
foreach ( $restricted_categories as $cat_slug ) {
if ( in_category( $cat_slug ) ) {
wp_redirect( wp_login_url( get_permalink() ) );
exit;
}
}
} );
ステップ4:メタフィールドで個別に制限を設定する
// 投稿のカスタムフィールド「_is_members_only」が1のときアクセス制限
add_action( 'template_redirect', function() {
if ( ! is_singular() || is_user_logged_in() ) return;
$is_restricted = get_post_meta( get_the_ID(), '_is_members_only', true );
if ( $is_restricted ) {
wp_redirect( wp_login_url( get_permalink() ) );
exit;
}
} );
// 管理画面にメタボックスを追加
add_action( 'add_meta_boxes', function() {
add_meta_box(
'members_only_box',
'会員限定設定',
function( $post ) {
$value = get_post_meta( $post->ID, '_is_members_only', true );
wp_nonce_field( 'members_only_nonce', 'members_only_nonce' );
echo '<label>';
echo '<input type="checkbox" name="is_members_only" value="1"'
. checked( $value, '1', false ) . '>';
echo ' 会員限定コンテンツにする';
echo '</label>';
},
'post',
'side'
);
} );
add_action( 'save_post', function( $post_id ) {
if ( ! isset( $_POST['members_only_nonce'] ) ) return;
if ( ! wp_verify_nonce( $_POST['members_only_nonce'], 'members_only_nonce' ) ) return;
$value = isset( $_POST['is_members_only'] ) ? '1' : '0';
update_post_meta( $post_id, '_is_members_only', $value );
} );
ステップ5:メンバーシッププラグインを使う
# MemberPress(有料・高機能)
# 公式サイトからZIPをダウンロードしてインストール
# WooCommerce Memberships(WooCommerce連携)
wp plugin install woocommerce-memberships --activate
# Restrict Content Pro(無料版あり)
wp plugin install restrict-content --activate
# Simple Membership(無料・シンプル)
wp plugin install simple-membership --activate
メンバーシッププラグインの主な機能:
- 有料プラン/無料プランの管理
- コンテンツへのアクセス制限ルール
- 決済連携(Stripe/PayPal)
- 会員登録フォームのカスタマイズ
- 会員向けメール通知
- 期限切れ処理(自動ダウングレード)
注意事項
template_redirectフックでのリダイレクトは、SEOクローラーへの影響を考慮してください。会員限定コンテンツはnoindexメタタグを追加するか、検索エンジンに表示しないよう設定することを推奨します。- ショートコードでの会員限定表示は「コンテンツは存在するが表示しない」方式のため、ページのソースHTMLには内容が含まれない点を確認してください(
returnで返さないこと)。 - 本格的な有料会員サイトにはMemberPressなどの専用プラグインの使用を強くお勧めします。自前実装はセキュリティリスクがあります。
まとめ
会員限定コンテンツ実装は「is_user_logged_inで条件分岐→template_redirectでリダイレクト→メタフィールドで個別制限→メンバーシッププラグイン導入」の流れで構築できます。規模に合わせてシンプルな実装から本格的なプラグインまで選択してください。関連記事:WordPressでカスタムユーザーロールを作成する方法、WooCommerceで決済を設定する方法。