是否在WooCommerce订阅中将用户限制为一个活动订阅?

时间:2018-01-25 作者:Johan Rheeder

我正在为我的客户建立一个基于会员/订阅的网站,他们正在使用woocommerce订阅(https://woocommerce.com/products/woocommerce-subscriptions). 现在的问题是客户端正在构建一些促销页面,基本上允许用户购买升级。现在,这很好,但客户机只希望客户只有一个订阅(和关联成员身份[https://woocommerce.com/products/woocommerce-memberships/]) 在任何时候。

因此,商定的解决方案是,在购买任何新订阅/产品时,应取消所有其他订阅。所有关联的成员资格都已删除/取消,并且只有最新的订阅与其附带的成员资格保持活动状态。

因此,我尝试构建此解决方案,但它根本不起作用,因此欢迎提供任何建议/指导!

function wp56908_new_order_housekeeping ($order_id)
{
    $args = array(
        \'subscriptions_per_page\' => -1,
        \'customer_id\'            => get_current_user_id(),
    );

    $subscriptions = wcs_get_subscriptions($args);

    foreach ($subscriptions as $subscription) {
        $s_order_id = method_exists( $subscription, \'get_parent_id\' ) ? $subscription->get_parent_id() : $subscription->order->id;
        if ($s_order_id != $order_id) {
            $cancel_note = \'Customer purchased new subscription in order #\' . $order_id;
            $subscription->update_status( \'cancelled\', $cancel_note );
        }
    }
}

2 个回复
SO网友:Peter HvD

除非我误解了你的意思,否则WC订阅已经有了这个功能。

首先,将订阅产品设置为可变或分组,而不是有多个单独的产品。

将订阅产品设置为限制购买:https://docs.woocommerce.com/document/subscriptions/store-manager-guide/#limit-subscription

然后启用允许切换:https://docs.woocommerce.com/document/subscriptions/switching-guide/#section-2

希望有帮助

SO网友:Rob Anderson

我遇到了这个问题,我先检查用户是否有活动订阅,然后才能将内容发送到购物车。

有一个钩子叫woocommerce_add_to_cart_validation.

因此,您可以在其上添加如下过滤器:

add_filter( \'woocommerce_add_to_cart_validation\', \'check_subscriptions\', 10, 2 );

然后检查用户是否有如下活动订阅:

$user_id = get_current_user_id();

$active_subscriptions = get_posts( array(
\'numberposts\' => -1,
\'meta_key\' => \'_customer_user\',
\'meta_value\' => $user_id,
\'post_type\' => \'shop_subscription\',
\'post_status\' => \'wc-active\',

) );
if(!empty($active_subscriptions)) return true;
else return false;
我写了一篇关于他的博客文章,对初学者来说很容易阅读:https://robinhenniges.com/woocommerce-subscription-allow-only-one-active-subscription/

结束

相关推荐

Membership Plugin

我正在为高级博客内容寻找一个好的插件。我的客户希望提供30次免费试用以及每月/6个月/每年付费的计划。它应该为每个人显示一个除此之外的帖子,即使他们作为客人在网站上,没有任何会员资格、试用或特价。它还需要通过贝宝接收付款,并在付款后自动打开订阅。我想能够自定义注册页面,以添加地址和电话号码等其他字段。