删除订单中的付款日期

问题描述 投票:0回答:1

我对此代码有疑问。我认为这是我需要的,但做了一些修改:-)

将 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();
    }
}

我附上了一些打印屏幕。

php wordpress woocommerce hook-woocommerce orders
1个回答
0
投票

针对您的

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();
    }
}

应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.