设定的付款日期在WooCommerce中更改了已付款订单状态



我WooCommerce,我正在使用"在Woocommerce中将管理员付款状态更改回未付款待处理订单状态"的回答代码来重置订单的已付款状态,当订单状态在后端手动更改为待处理时。

因此,例如,如果订单状态从"已完成"更改为"待处理",它将删除以下内容:">已于2019年4月2日支付@ 5:29 pm">

现在我的问题是在订单状态设置为"待处理"之后,我尝试再次将其状态设置为"已完成",但未能设置付款日期或完成日期。

我使用的是最新版本的Woocommerce版本5.1.1

知道如何解决这个问题吗?

更新 #1 - 要解决此问题,请尝试以下操作:

add_action( 'woocommerce_order_status_changed', 'pending_reset_order_paid_date', 20, 4 );
function reset_order_paid_date( $order_id, $old_status, $new_status, $order ) {
    // Null paid date
    if ( in_array( $old_status, array('on-hold', 'processing', 'completed') ) && 'pending' === $new_status ) {
        $order->set_date_paid(null);
        $order->update_meta_data( '_reseted_paid_date', true ); // Add a custom meta data flag
        $order->save();
    }
    // Set paid date back when the paid date has been nulled on 'processing' and 'completed' status change
    if( $order->get_meta('_reseted_paid_date' ) && in_array( $new_status, array('pending', 'on-hold') )
        && in_array( $new_status, array('processing', 'completed') ) )
    {
        $order->set_date_paid( current_time( 'timestamp', true ) );
        $order->delete_meta_data( '_reseted_paid_date' ); // Remove the custom meta data flag
        $order->save();
    }
}

代码进入函数.php活动子主题(或活动主题(的文件。经过测试并工作。

相关内容

  • 没有找到相关文章

最新更新