首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据用户的活动成员资格数量显示/隐藏内容

根据用户的活动成员资格数量显示/隐藏内容
EN

Stack Overflow用户
提问于 2019-06-10 03:45:54
回答 1查看 63关注 0票数 2

使用短代码,我需要根据用户拥有的活跃会员数量来显示内容,而不管他是哪个会员计划的成员。

我并不是很喜欢PHP,但是我发现wc_memberships_get_user_memberships函数是存在的,所以我想这样开始吧。但这几乎是我的极限:

代码语言:javascript
复制
add_shortcode('count-active-memberships', 'count_active_memberships');
function count_active_memberships(){
$user_id = get_current_user_id();

$args = array( 
    'status' = 'active'
);  

$active_memberships = count(wc_memberships_get_user_memberships( $user_id, $args ));
}

最后,它应该看起来像

count- active - memberships ="3“具有3个活动成员的成员内容/count-active-memberships

谢谢你的帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-10 07:46:10

当您注册一个短码时,您的回调函数count_active_memberships()最多会接收两个参数:

  • 一个参数数组(传递给短码的参数),
  • 短码内的内容(count-
  • -memberships is the content active

如果您希望仅在当前用户具有3个或更多活动成员资格时才显示某些内容,则可以执行以下操作:

代码语言:javascript
复制
add_shortcode('count-active-memberships', 'count_active_memberships');
function count_active_memberships($atts, $content = ''){
    $user_id = get_current_user_id();

    // The user is logged in, check memberships
    if ( $user_id ) {
        $args = array( 
            'status' => 'active'
        );
        $active_memberships = wc_memberships_get_user_memberships($user_id, $args);

        if ( is_array($active_memberships) && count($active_memberships) >= 3 ) {
            return $content;
        }
    }

    // User is either not logged in or doesn't have enough active memberships
    // so let's return an empty string.
    return '';
}

现在,如果您希望用户可以配置所需的最低成员资格数量,则需要定义一个新属性(例如,min_memberships)在注册短码的函数内。例如:

代码语言:javascript
复制
add_shortcode('count-active-memberships', 'count_active_memberships');
function count_active_memberships($atts, $content = ''){
    // Shortcode attributes
    $atts = shortcode_atts(array(
        'min_memberships' => 3
    ), $atts, 'count-active-memberships');

    // Let's make sure that the value passed by the user is a number
    if (
        ! is_numeric($atts['min_memberships']) 
        || $atts['min_memberships'] < 0
    ) {
        $atts['min_memberships'] = 3; // Fallback to minimum 3 memberships
    }

    $user_id = get_current_user_id();

    // The user is logged in, check memberships
    if ( $user_id ) {
        $args = array( 
            'status' => 'active'
        );
        $active_memberships = wc_memberships_get_user_memberships($user_id, $args);

        if (
            is_array($active_memberships) 
            && count($active_memberships) >= $atts['min_memberships']
        ) {
            return $content;
        }
    }

    // User is either not logged in or doesn't have enough active memberships
    // so let's return an empty string.
    return '';
}

然后你就可以这样做了:

代码语言:javascript
复制
[count-active-memberships min_memberships=5]
Content visible to users with 5 or more active memberships
[/count-active-memberships]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56517875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档