【问题标题】:Set back date paid on paid order statuses change in WooCommerce在 WooCommerce 中设置支付订单状态更改的回退日期
【发布时间】:2019-04-02 05:48:08
【问题描述】:

我 WooCommerce,我正在使用 "Change admin payment status back to unpaid for pending order status in Woocommerce" 应答代码在后端手动将订单状态更改为待处理时重置订单的已付款状态。

例如,如果订单状态从“已完成”更改为“待处理”,它会删除以下内容:“Paid on April 2, 2019 @ 5:29 pm”

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

我正在使用最新版本的 Woocommerce 版本 5.1.1

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

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce orders


    【解决方案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();
        }
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

    【讨论】:

    • 感谢您的快速回复,先生,但它说“语法错误,意外'in_array'(T_STRING)”这行 if( $order->get_meta('_reseted_pa​​id_date' ) in_array( $new_status , array('pending', 'on-hold') ) ) && in_array( $new_status, array('processing', 'completed') ) ) { 这里是截图imgur.com/FJwFab8
    • 先生,您的新代码与 && 仍然出现错误,我无法使其工作...“您尝试保存的代码 sn-p 在第 10 行产生了一个致命错误:语法错误,意外的'&&'(T_BOOLEAN_AND)”你能告诉我先生这段代码有什么问题吗......我正确复制并粘贴到其中function.php也尝试使用sn-ps但失败了......我需要改变吗您的代码中的任何内容..我也尝试调试但我失败了对不起...我不擅长 php 先生..帮帮我..
    • 是的先生,谢谢您...像魅力一样工作...这是我正在寻找的代码...我以后会再问...
    猜你喜欢
    • 2016-12-09
    • 1970-01-01
    • 2019-08-12
    • 2017-05-24
    • 1970-01-01
    • 2016-08-26
    • 2019-04-24
    • 2018-01-10
    • 2019-02-21
    相关资源
    最近更新 更多