Woocommerce 在订阅续订时获取新订单 ID

Nat*_*ade 0 php wordpress subscription stripe-payments woocommerce

我有 Woocommerce 订阅,并且 Stripe Gateway 设置并正常工作。每次我手动测试计划的续订时,它都会保存续订的新订单 ID,但我找不到访问它的方法。我设置了scheduled_subscription_payment()打印对象$order,但由于订阅引用了初始订单,order_id 始终相同。有没有办法在订阅续订触发后立即获取新订单 ID?

我引用的函数位于 Stripe WC Gateway 插件中:

public function scheduled_subscription_payment( $amount_to_charge, $order, $product_id )
Run Code Online (Sandbox Code Playgroud)

Mau*_*cia 6

似乎在 WooCommerce Subscriptions 的最新版本 (2.0.0) 中,他们弃用了旧的 Scheduled_subscription_ payment 挂钩,并替换为新的 woocommerce_scheduled_subscription_ payment 挂钩。

旧参数为:$amount、$original_order、$product_id。

新的有:$amount、$renewal_order。

因此,使用最新版本的 WC Subscriptions,您可以直接访问新的续订订单数据。要从续订中检索父订单,您可以使用:

        if ( wcs_order_contains_renewal( $renewal_order->id ) ) {
            $parent_order_id = WC_Subscriptions_Renewal_Order::get_parent_order_id( $renewal_order->id );
        }
Run Code Online (Sandbox Code Playgroud)

如果您无法获取最后一个 WC Subscriptions 插件,则从父级获取续订订单会很棘手:您可能可以从给定父级订单获取所有续订订单并获取最后一个,但您不能 100% 确定这是正确的顺序。

不管怎样,如果你能得到最新的 WC Subscriptions 版本肯定是一个更好的主意。

  • 上帝祝福你。不知道为什么主题作者从未将您的答案标记为解决方案,但它是! (2认同)