コスモスパム会員管理「ページ権限なしメッセージ」をカスタマイズする

KBoardを開発したコスモスパムで販売されているコスモスパム会員管理プラグインを使用すると、ページへのアクセス権を会員権限別に指定することができ、ほかに会員管理に関連するさまざまな機能を活用することができます。特定のメンバーの役割以上を表示できるように、制限されたページまたは投稿に権限のないユーザーがアクセスしようとすると、ページを表示する権限がないことを示すメッセージが表示されます。

このメッセージはプラグイン設定ページの 'ページ権限なしメッセージ'セクションで指定できます。もしあなたの投稿カテゴリや会員評価(会員の役割)によって異なるメッセージを設定したい場合は、コードモスファーム会員管理プラグインが提供する フック(hook)を活用できます。

コスモスパム会員管理プラグインが提供するフック(アクション/フィルタ)

コスモスパム会員管理プラグインが提供するフックをまとめて一目で説明するマニュアルはありません。ただし、プラグイン開発者は プラグイン紹介ページの変更ログ部分を参考にすることを提示しています。 😥

私はプラグイン紹介ページの変更履歴を参照してアクションとフィルタをまとめました。

アクションフック

  • cosmosfarm_members_admin_menu
  • cosmosfarm_members_before_subscription_order_setting
  • cosmosfarm_members_before_subscription_order_setting_html
  • cosmosfarm_members_certification_result
  • cosmosfarm_members_delete_account
  • cosmosfarm_members_dormant_member_alert
  • cosmosfarm_members_mail_send
  • cosmosfarm_members_pre_activity_history_download
  • cosmosfarm_members_pre_subscription_again
  • cosmosfarm_members_pre_subscription_checkout
  • cosmosfarm_members_pre_subscription_request_pay
  • cosmosfarm_members_pre_users_csv_download
  • cosmosfarm_members_pre_users_csv_upload
  • cosmosfarm_members_pre_order_download
  • cosmosfarm_members_print_purchase_tracking_code
  • cosmosfarm_members_skin_after_subscription_product
  • cosmosfarm_members_skin_comments_reviews
  • cosmosfarm_members_skin_subscription_checkout_field_after
  • cosmosfarm_members_skin_subscription_checkout_field_before
  • cosmosfarm_members_skin_subscription_checkout_form_footer
  • cosmosfarm_members_skin_subscription_checkout_form_header
  • cosmosfarm_members_skin_subscription_checkout_field_template
  • cosmosfarm_members_skin_subscription_product_document
  • cosmosfarm_members_skin_subscription_product_list
  • cosmosfarm_members_social_login_callback
  • cosmosfarm_members_subscription_billing_key_pre_delete
  • cosmosfarm_members_subscription_notification_execute
  • cosmosfarm_members_user_data_social_login_first_update
  • cosmosfarm_members_user_required
  • cosmosfarm_members_user_social_register
  • cosmosfarm_members_users_csv_upload_row

フィルターフック

  • cosmosfarm_memebers_after_coupon_calculate_price
  • cosmosfarm_members_after_profile_link_rows
  • cosmosfarm_members_alimtalk_every_recipient_list
  • cosmosfarm_members_alimtalk_template_paremeter
  • cosmosfarm_members_category_restriction
  • cosmosfarm_members_certification_confirm_data
  • cosmosfarm_members_closed_site_allow_pages
  • cosmosfarm_members_courier_company_list
  • cosmosfarm_members_exists_check_result
  • cosmosfarm_members_get_social_api
  • cosmosfarm_members_header_menu_current_page
  • cosmosfarm_members_init_values_inicis_mobile
  • cosmosfarm_members_init_values_inicis_pc
  • cosmosfarm_members_localize_strings
  • cosmosfarm_members_login_form_user_logged_in
  • cosmosfarm_members_login_redirect_to
  • cosmosfarm_members_naver_profile_url
  • cosmosfarm_members_order_bulk_actions
  • cosmosfarm_members_order_csv_download_row_data
  • cosmosfarm_members_order_download_add_postcode
  • cosmosfarm_members_order_download_columns
  • cosmosfarm_members_order_download_columns_value
  • cosmosfarm_members_order_list_table_columns
  • cosmosfarm_members_page_restriction
  • cosmosfarm_members_page_restriction_content
  • cosmosfarm_members_page_restriction_login_message
  • cosmosfarm_members_page_restriction_message
  • cosmosfarm_members_page_restriction_register_message
  • cosmosfarm_members_page_restriction_permission_message
  • cosmosfarm_members_policy_privacy
  • cosmosfarm_members_policy_service
  • cosmosfarm_members_pre_social_login
  • cosmosfarm_members_register_form_policy_fields
  • cosmosfarm_members_redeem_point_coupon_redirect
  • cosmosfarm_members_send_confirmed_email
  • cosmosfarm_members_send_verify_email
  • cosmosfarm_members_shortcode_users_page_layout
  • cosmosfarm_members_shortcode_users_page_view_allow
  • cosmosfarm_members_skin_subscription_checkout_field
  • cosmosfarm_members_skin_subscription_checkout_title
  • cosmosfarm_members_sms_send_data
  • cosmosfarm_members_subscription_again_point_to_apply
  • cosmosfarm_members_subscription_again_price
  • cosmosfarm_members_subscription_billing_key_post_delete
  • cosmosfarm_members_subscription_checkout_button_display_text
  • cosmosfarm_members_subscription_is_use_earn_points
  • cosmosfarm_members_subscription_iamport_pg_mid
  • cosmosfarm_members_subscription_m_redirect_url
  • cosmosfarm_members_subscription_order_*
  • cosmosfarm_members_subscription_order_option_fields
  • cosmosfarm_members_subscription_pay_app_scheme
  • cosmosfarm_members_subscription_pay_count_limit
  • cosmosfarm_members_subscription_product_*
  • cosmosfarm_members_subscription_product_active
  • cosmosfarm_members_subscription_product_fields
  • cosmosfarm_members_subscription_product_first_free
  • cosmosfarm_members_subscription_product_first_price
  • cosmosfarm_members_subscription_product_is_coupon_available
  • cosmosfarm_members_subscription_product_option_fields
  • cosmosfarm_members_subscription_product_option_subtitle
  • cosmosfarm_members_subscription_product_option_title
  • cosmosfarm_members_subscription_product_price
  • cosmosfarm_members_subscription_product_type
  • cosmosfarm_members_subscription_request_pay_order_point_to_apply
  • cosmosfarm_members_subscription_status_display
  • cosmosfarm_members_template_comments_reviewsv
  • cosmosfarm_members_template_social_buttons
  • cosmosfarm_members_template_subscription_product_document
  • cosmosfarm_members_template_subscription_product_list
  • cosmosfarm_members_user_display_name
  • cosmosfarm_members_user_register_role_list
  • cosmosfarm_members_users_csv_download_add_usermeta
  • cosmosfarm_members_users_csv_download_columns
  • cosmosfarm_members_users_csv_download_row_data
  • cosmosfarm_members_users_csv_download_usermeta_value
  • cosmosfarm_members_dormant_member_alert_email
  • cosmosfarm_members_is_continue_subscription_again

個々のアクション/フィルタがどのような機能を果たすかについての明確な説明やマニュアルはありませんが、フック名でどのような機能をするかを推測して活用する必要があるようです。

コスモスパム会員管理「ページ権限なしメッセージ」をカスタマイズする

プラグインの設定ページには、「ページ権限なしメッセージ」を入力するオプションがあります。

会員登録管理»設定»ページ権限なしメッセージ セクションで、制限付きページを表示する権限を持たないユーザーに表示するメッセージを指定できます。

コスモスパム会員管理「ページ権限なしメッセージ」をカスタマイズする

これとは別にページ制限通知メッセージ'フィールドもあります。これは、おそらくログインするか、会員登録する必要があり、ページを表示できることを示すメッセージのようです。

ページ権限なしメッセージ セクションに何も入力しない場合は、あっ!加入挨拶をすればすぐに読むことができますよ!「」が表示されます。

このフィールドにメッセージをテキストまたはHTMLとして入力できます。ここにメッセージを入力すると、すべてのページ/投稿に権限のないユーザーがアクセスすると、ここで指定されたメッセージが表示されます。

投稿カテゴリやユーザーの役割(会員ランク)に応じて別のメッセージを出力したい場合はどうすればよいですか? 2つの方法を考えることができますが、ここでは cosmosfarm_members_page_restriction_permission_message フィルタの使い方を見てみましょう。

1 まず、コスモスパム会員管理設定の「ページ権限なしメッセージ'フィールドにフレーズが設定されている場合は削除します。このセクションにメッセージが入力されている場合は、フィルタを使用して設定したメッセージよりも優先されます。

2 チャイルドテーマの関数ファイルに次のコードを入力します。

// Cosmosfarm Members 권한 메시지 커스터마이징 (관리자 설정 무시)
add_filter('cosmosfarm_members_page_restriction_permission_message', function ($message, $context = null) {
    // 왜: 특정 카테고리(1/2/3)에 다른 메시지를 노출하고, 그 외는 기본 메시지 사용
    $post_id = get_queried_object_id();

    // 카테고리 → 메시지 매핑 (우선순위는 배열 순서)
    $category_message_map = [
        1 => '메시지 1',
        2 => '메시지 2',
        3 => '메시지 3',
    ];

    if ($post_id && is_singular('post')) {
        // 매핑된 카테고리 중 최초로 일치하는 메시지 반환
        foreach ($category_message_map as $cat_id => $cat_message) {
            if (has_category((int) $cat_id, $post_id)) {
                return $cat_message;
            }
        }
    }

    // 페이지, 아카이브, 다른 카테고리 등 모든 경우의 기본 메시지
    return '기본 메시지';
}, 9999, 2);

上記のコードは...

  1. 投稿のカテゴリID = 1の場合は「メッセージ1」を表示し、
  2. 投稿のカテゴリID = 2の場合は「メッセージ2」を表示し、
  3. 投稿のカテゴリID = 3の場合は「メッセージ3」を表示し、
  4. 他のすべての状況では、「基本メッセージ」が表示されます。

上記のコードを参考にして、状況に合わせて応用できます。

メッセージをHTMLコードに設定することも可能です。

add_filter('cosmosfarm_members_page_restriction_permission_message', function ($message, $context = null) {
    $post_id = get_queried_object_id();

    // 카테고리 → HTML 메시지 매핑
    $map = [
        1 => '<div class="cm-alert cm-alert-warning"><strong>앗 권한이 부족합니다</strong><p>해당 카테고리의 콘텐츠는 권한이 필요합니다.</p><a class="cm-btn" href="/pricing">권한 업그레이드</a></div>',
        2 => '<div class="cm-alert cm-alert-info"><strong>메시지 2</strong><p>이 콘텐츠는 멤버 전용입니다.</p><a class="cm-btn" href="/login">로그인</a></div>',
        3 => '<div class="cm-alert cm-alert-danger"><strong>메시지 3</strong><p>접근 권한을 확인해 주세요.</p><a class="cm-btn" href="/support">문의하기</a></div>',
    ];

    $default_html = '<div class="cm-alert"><strong>기본 메시지</strong><p>권한이 부족하여 이 글을 볼 수 없습니다.</p></div>';

    if ($post_id && is_singular('post')) {
        foreach ($map as $cat_id => $html) {
            if (has_category((int) $cat_id, $post_id)) {
                return $html; // HTML 그대로 반환
            }
        }
    }
    return $default_html;
}, 9999, 2);

/**
 * (선택) 어떤 환경에서 필터 출력이 HTML로 렌더링되지 않는 경우,
 * 동일한 로직을 '내용 대체' 훅에도 적용하여 확실히 HTML을 표시.
 */
add_filter('cosmosfarm_members_page_restriction_content', function ($content, $context = null) {
    // 이미 위 필터에서 처리했으면 그대로 두고, 필요 시만 대체
    // 간단히: 권한 제한 상태라면 위 메시지 생성 로직을 재사용해도 됨.
    return $content; // 상황에 따라 동일 로직 복제 가능
}, 9999, 2);

/* (선택) 최소 스타일: 테마 CSS가 없을 때 기본 버튼/박스 형태만 잡아줌 */
add_action('wp_head', function () {
    echo '<style>
    .cm-alert{padding:12px;border:1px solid #ddd;border-radius:8px;margin:12px 0}
    .cm-alert-warning{border-color:#f1c40f}
    .cm-alert-info{border-color:#3498db}
    .cm-alert-danger{border-color:#e74c3c}
    .cm-btn{display:inline-block;margin-top:8px;padding:6px 10px;border:1px solid #aaa;border-radius:6px;text-decoration:none}
    </style>';
});

上記のコードを使用する場合、権限のないユーザーが投稿にアクセスすると、次のようにメッセージが表示されます。

コスモスパム会員管理「ページ権限なしメッセージ」の例

参照

コメントを残す

コメントを残す