我对此代码有疑问。我认为这是我需要的,但做了一些修改:-)
将 Woocommerce 中的待处理订单状态的管理付款状态更改回未付款
就我而言,代码不起作用,因为我使用自定义订单状态预购
我来解释一下这个问题。我的所有产品都是预购的,为此我使用预购插件(来自 Bright)和自定义支付插件(来自 WPRuby),我将其命名为“Betaal later”(荷兰语“稍后付款”),并且我创建了一个自定义订单状态已预订。在自定义支付插件中,我设置了每个订单的状态为“预购”。
因此,客户下了订单,唯一的付款选项是“稍后测试”。下订单后,订单已经获得付款日期(订单创建日期),但这是不正确的,因为尚未付款。有人可以帮助我使用这段代码来适应我的情况吗?代码似乎不适用于自定义订单状态?因为我尝试在代码中添加预购,但它给出了一个严重错误。
我更改的代码:
add_action( 'woocommerce_order_status_changed', 'reset_order_paid_date', 20, 4 );
function reset_order_paid_date( $order_id, $old_status, $new_status, $order ){
if ( in_array( $old_status, array('on-hold', 'processing', 'completed', 'pending') ) && $new_status == 'pre-ordered') {
$order->set_date_paid(null);
$order->save();
}
}
我附上了一些打印屏幕。
针对您的
pre-ordered
自定义状态尝试以下操作:
add_action( 'woocommerce_order_status_pre-ordered', 'reset_order_paid_date_for_pre_orders', 20, 2 );
function reset_order_paid_date_for_pre_orders( $order_id, $order ){
if ( $order->get_date_paid() ) {
$order->set_date_paid(null);
$order->save();
}
}
应该可以。