在WooCommerce预订中取消付费预订时,将订单状态更改为退款



我正在使用WooCommerce预订插件使用WooCommerce,我想更新每次取消付费预订时退还的订单状态。

我在Stackoverflow上找到了一些答案,但仍然无法解决此要求。

我知道我可能完全错了,但是这是我最后做的尝试,显然它没有用:

add_action('woocommerce_booking_paid_to_cancelled','change_status_to_refund', 10, 2);
function change_status_to_refund($booking_id, $order_id) {
     $booking = new WC_Order($booking_id);
     $order = new WC_Order($order_id);
     $booking_status = $booking->get_status();
     if($booking_status != 'paid'){
        $order->update_status('refund', 'order_note');
     }
 }

欢迎任何帮助。

您没有在功能中使用正确的woocommerce_booking_{ status_from }_to_{ status_to }操作钩的参数,该参数为:

  • 预订ID:$booking_id
  • 预订对象$booking

因此,您需要从代码中的预订获取订单,才能更新订单状态。

注意:条件$booking_status != 'paid'实际上并不需要。

因此,您的代码将更简单有效:

add_action('woocommerce_booking_paid_to_cancelled','cancelled_booking_order_status_cahnged_to_refund', 10, 2);
function cancelled_booking_order_status_cahnged_to_refund( $booking_id, $booking ) {$
    // Get the WC_Order object from a booking
    $order = wc_get_order( wp_get_post_parent_id( $booking_id ) );
    // Update order status
    if( is_a($order, 'WC_Order') )
        $order->update_status('refund');
}

代码在您的活动子主题(或活动主题)的功能上启用函数。它应该有效。


文档: WooCommerce预订过滤器和操作钩的开发人员文档

相关内容

  • 没有找到相关文章

最新更新