Wordpress Woocommerce会员资格限制为一个会员

Wordpress Woocommerce会员资格限制为一个会员,wordpress,woocommerce,hook-woocommerce,membership,woocommerce-memberships,Wordpress,Woocommerce,Hook Woocommerce,Membership,Woocommerce Memberships,我有一个Wordpress会员网站,是建立在 WooCommerce与WooCommerce会员插件 情景: - Membership Plan = Gold-Plan-Membership / 1-month - simple Product = Gold-Product-Membership / €10,00 当客户购买产品时,“黄金产品会员” 激活订阅“黄金计划会员资格”1个月。 到目前为止还不错 我想限制成员一次只能有一个活动成员。 我想做的是阻止创建任何新的会员购买 如果任何其

我有一个Wordpress会员网站,是建立在 WooCommerce与WooCommerce会员插件

情景:

 - Membership Plan = Gold-Plan-Membership / 1-month

 - simple Product = Gold-Product-Membership / €10,00
当客户购买产品时,“黄金产品会员” 激活订阅“黄金计划会员资格”1个月。 到目前为止还不错

我想限制成员一次只能有一个活动成员。 我想做的是阻止创建任何新的会员购买 如果任何其他会员资格处于活动状态。

现在。 下面的代码 检查活动的客户成员计划及其状态 (“有效”、“免费”、“待定”、“免费试用”), 并且会员资格不会为此订单创建新的用户会员资格。 以下代码将检查所有成员身份状态 可以访问受限内容的

但只检查会员计划,而不是购买其产品

我会解释的。 客户购买产品
“黄金产品会员资格”
, 完成结帐程序并实际执行付款, 该产品的订单已处理。 实际上,
“黄金计划成员资格”
未激活

显然,这是一个问题

我正在寻找一种对该产品有效的解决方案 但同时它与会员计划地位的关系也融为一体

  • 我想限制成员一次只能有一个活动成员。
提前谢谢

代码

/**
 * There are two ways we could prevent purchasing more than one membership:
 *  1. prevent access if the customer already has an active membership
 *  2. prevent access if the customer already has any membership
 *
 * This snippet shows the second scenario.
 */


/**
 * Do not grant membership access to purchasers if they already hold any membership, regardless of status
 *
 * @param bool $grant_access true if the purchaser should get memberships access from this order
 * @param array $args {
 *  @type int $user_id purchaser's WordPress user ID
 *  @type int $product_id the ID of the access-granting product
 *  @type int $order_id the ID of order for this purchase
 * }
 * @return bool $grant_access
 */

function sv_wc_memberships_limit_to_one_membership( $grant_access, $args ) {

    // get all active memberships for the purchaser, regardless of status
    $memberships = wc_memberships_get_user_memberships( $args['user_id'] );

    // if there are any memberships returned, do not grant access from purchase
    if ( ! empty( $memberships ) ) {
        return false;
    }

    return $grant_access;
}
add_filter( 'wc_memberships_grant_access_from_new_purchase', 'sv_wc_memberships_limit_to_one_membership', 1, 2 );