You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中如何按RCP等级筛选指定角色的用户?

筛选Restrict Content Pro中特定订阅等级的自由职业者

因为Restrict Content Pro(RCP)的订阅数据并未存储在WordPress默认的用户元数据表(wp_usermeta)中,而是存在独立的rcp_memberships表,所以你之前用meta_query的方式无法生效。下面提供两种可行的解决方案:

方法一:利用RCP内置API获取目标用户ID

这种方法依赖RCP官方函数,兼容性更好,后续版本更新不易出问题:

// 获取订阅等级为1、2、3的活跃会员ID列表
$memberships = rcp_get_members( array(
    'subscription_id' => array(1, 2, 3),
    'status' => 'active', // 仅筛选活跃订阅,可根据需求修改或移除
    'fields' => 'user_id' // 指定仅返回用户ID字段
) );

// 提取纯用户ID数组
$target_user_ids = wp_list_pluck( $memberships, 'user_id' );

// 筛选符合角色且在目标ID列表中的自由职业者
$freelancers = get_users( array(
    'role' => 'fmaa_freelancer',
    'number' => -1,
    'orderby' => 'display_name',
    'order' => 'ASC',
    'include' => $target_user_ids
) );

方法二:自定义用户查询关联RCP数据表

直接通过WP_User_Query的join和where参数关联RCP会员表,适合复杂筛选场景:

global $wpdb;

$freelancers_query = new WP_User_Query( array(
    'role' => 'fmaa_freelancer',
    'number' => -1,
    'orderby' => 'display_name',
    'order' => 'ASC',
    'join' => "INNER JOIN {$wpdb->prefix}rcp_memberships ON {$wpdb->users}.ID = {$wpdb->prefix}rcp_memberships.user_id",
    'where' => "AND {$wpdb->prefix}rcp_memberships.subscription_id IN (1, 2, 3) AND {$wpdb->prefix}rcp_memberships.status = 'active'"
) );

$freelancers = $freelancers_query->get_results();

注意事项

  • 确认subscription_id的数值与你RCP后台创建的订阅等级ID完全匹配,若等级ID不是1/2/3,需对应修改数组值。
  • status参数可选,若要包含过期、待确认状态的订阅,可修改为expired、pending等对应值,或直接移除该条件。

内容的提问来源于stack exchange,提问作者Muhammad Zohaib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:07:20