我正在将Woocommerce与Woocommerce Booking插件一起使用,并且我希望在每次取消付费预订时将订单状态更新为可退款。
我在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');
}
}
欢迎任何帮助。
答案 0 :(得分:0)
您未在函数中为woocommerce_booking_{ status_from }_to_{ status_to }
操作钩使用正确的参数,即:
$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');
}
代码在您的活动子主题(或活动主题)的function.php文件上。应该可以。
文档: Woocommerce booking developer documentation for filter and action hooks