我正在为我的客户建立一个基于会员/订阅的网站,我们正在使用Woocommerce Subscriptions和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 );
}
}
}
add_action( 'woocommerce_thankyou', 'wp56908_new_order_housekeeping', 10, 1 );