我一直在寻找一种方法来根据订单备注更改我们的 woocommerce 订单状态。我们有一个卡片处理器,可以在订单获得批准时添加订单备注,但它会将订单搁置,因为该卡仅被授权未收费。订单发货后,我们稍后会向卡收费,但我们需要订单进入“处理”状态,以便我们可以将订单导出到我们的系统中,以便我们实际处理订单(我们不通过 woocommerce 进行处理)。< /p>
但是,我找到了这个代码,我想知道是否可以修改它以提取订单备注中的内容,因为我们的处理器会添加该卡是否已获批准。
function mysite_woocommerce_payment_complete( $order_id ) {
error_log( "Payment has been received for order $order_id" );
}
add_action( 'woocommerce_payment_complete', 'mysite_woocommerce_payment_complete', 10, 1 );
答案 0 :(得分:1)
这是一个示例,它通过处理切换暂停订单状态。您可以使用它,或者如果需要添加更多条件,请在此处提及或相应更新。谢谢
function switch_hold_status_to_processing ($order_id) {
$order = new WC_Order( $order_id );
$order->update_status('processing');
}
add_action('woocommerce_order_status_on-hold', 'switch_hold_status_to_processing');
答案 1 :(得分:1)
您可以使用wc_get_order_notes($args)
函数获取特定订单的订单备注。它返回一组订单备注。然后您可以遍历数组以找到您需要的订单备注。然后使用 if
语句验证订单备注的内容并更新状态。
function mysite_woocommerce_payment_complete( $order_id ) {
$order_notes = wc_get_order_notes([
'order_id' => $order_id,
]);
foreach ($order_notes as $order_note){
if ($order_note->content == "Order verified"){
$order = new WC_Order( $order_id );
$order->update_status('processing');
break;
}
}
}
add_action( 'woocommerce_payment_complete', 'mysite_woocommerce_payment_complete', 10, 1 );