首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将用户限制为WooCommerce订阅中的一个活动订阅?

将用户限制为WooCommerce订阅中的一个活动订阅?
EN

WordPress Development用户
提问于 2018-01-25 02:50:26
回答 2查看 6.8K关注 0票数 3

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

因此,商定的解决方案是,在购买任何新的订阅/产品时,所有其他订阅都应取消。所有相关成员被删除/取消,并且只有最新的订阅应该与其伴随的成员一起保持活动状态。

因此,我已经尝试建立这个解决方案,但它只是不起作用,所以任何建议/方向将是最欢迎的!

代码语言:javascript
复制
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 );
        }
    }
}
EN

回答 2

WordPress Development用户

发布于 2018-01-26 13:10:02

除非我误解了您的意思,否则WC订阅已经具有此功能。

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

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

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

希望这有帮助

票数 3
EN

WordPress Development用户

发布于 2018-07-06 16:00:48

我正面临这个问题,我检查一个用户是否有一个活动的订阅之前,他可以把什么东西到手推车。

有一个叫做woocommerce_add_to_cart_validation的钩子。

所以您可以在这样的情况下添加一个过滤器:

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

而不是检查用户是否有如下所示的活动订阅:

代码语言:javascript
复制
$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/

票数 3
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/292149

复制
相关文章

相似问题

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