从订单ID获取订阅ID

Yos*_*ssi 4 php wordpress orders woocommerce woocommerce-subscriptions

我正在尝试subscription id从动作挂钩中获取woocommerce_order_status_changed

它为我提供order id了客户每次切换都会更改的功能。

例如:如果subscription id10,则原始order id值为9

现在,客户进行的每个开关都会生成一个新的订单ID,上面的操作会为您提供该ID。在这一点上我有$customer_id$order_id和原来的post id9

如何获得subscription id当前订单的?

谢谢

Loi*_*tec 7

您可以使用专用功能wcs_get_subscriptions_for_order()来检索$ subscription ID。

因此,这可能是您的代码:

add_action('woocommerce_order_status_changed', 'action_order_status_changed');
function action_order_status_changed( $order_id ){
    $subscriptions_ids = wcs_get_subscriptions_for_order( $order_id );
    // We get the related subscription for this order
    foreach( $subscriptions_ids as $subscription_id => $subscription_obj )
        if($subscription_obj->order->id == $order_id) break; // Stop the loop

    // The subscription ID: $subscription_id 
    // The An instance of the Subscription object: $subscription_obj 
    // ...
}
Run Code Online (Sandbox Code Playgroud)

  • 任何阅读本文的人的注意事项:我必须将函数的参数设置为 `wcs_get_subscriptions_for_order( $order_id, array( 'order_type' => 'any' ) )` 才能使其正常工作。如果没有第二个参数,它对我不起作用(请参阅 woocommerce-subscriptions 插件中 class-wc-subscriptions-order.php 文件中的函数`add_subscriptions_to_view_order_templates()`,它执行相同的操作)。我正在使用 WC 3.3.5 和 Wordpress 4.9.4 (5认同)