【问题标题】:Change COD default order status to "On Hold" instead of "Processing" in Woocommerce在 Woocommerce 中将 COD 默认订单状态更改为“暂停”而不是“处理中”
【发布时间】:2019-04-16 06:34:48
【问题描述】:

我需要帮助解决与插件“WooCommerce Pay for Payment”相关的问题,该插件计算了一些额外的运费。问题是,这个插件会自动设置“处理”状态,这会导致感谢电子邮件付款(在本地付款的情况下)并且不发送有关新订单的电子邮件通知,所以客户很困惑(我没有发送任何钱,我收到了电子邮件“感谢您的付款”)。

我试过这个解决方案:Set WooCommerce order status when order is created from processing to pending

但它只会将订单状态更改回“暂停”,但仍会发送电子邮件感谢付款。

我只需要在每封新订单电子邮件中向客户发送有关新订单的信息,仅此而已(我想手动将状态更改为“处理中”)。

感谢您的帮助,我不知道如何解决,因为我找不到导致插件状态更改的 PHP 文件。

编辑:对不起。这是 woocommerce 插件中的 COD 问题。如我所述,不支付付款。 Woocommerce COD 自动设置“处理”状态。

我在 github 上找到了解决方案:here

这是第一个代码。

根据对这个问题的回答,这段代码工作对我来说很好:

function sv_wc_cod_order_status( $status ) {
    return 'on-hold';
}
add_filter( 'woocommerce_cod_process_payment_order_status', 'sv_wc_cod_order_status', 15 ); 

【问题讨论】:

    标签: php wordpress woocommerce orders payment-method


    【解决方案1】:

    更新:you found in Github 的代码已经过时、笨拙和复杂,因为现在有a dedicated filter hook。您最好试试这个轻量级且有效的代码,它将“货到付款” 支付网关(COD) 的默认订单状态设置为“暂挂”

    add_filter( 'woocommerce_cod_process_payment_order_status', 'change_cod_payment_order_status', 10, 2 );
    function change_cod_payment_order_status( $order_status, $order ) {
        return 'on-hold';
    }
    

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



    所以支付网关设置的默认订单状态现在是“等待中”而不是“处理中”

    【讨论】:

      【解决方案2】:

      就我而言,

      add_filter( 'woocommerce_cod_process_payment_order_status','change_cod_payment_order_status', 10, 2 );
      function change_cod_payment_order_status( $order_status, $order ) {
        return 'on-hold';
      }
      

      在 WC 4.42 + WP 5.4.1 中表现出色

      谢谢!

      【讨论】:

        【解决方案3】:

        上述两个解决方案是相同的,除了:

        • @LoicTheAztek 的解决方案在核心函数中有 2 个参数,并且具有 '10' 挂钩优先级
        • @Jiří-Prek 的解决方案在核心函数中有一个参数,并且具有 '15' 挂钩优先级

        但对于我的 WP5.1.1 和 WC3.5.7

        function change_cod_payment_order_status( $order_status, $order ) {
        return 'on-hold';
        

        }

        产生错误

        PHP 致命错误:未捕获的 ArgumentCountError:参数太少 函数 change_cod_payment_order_status()

        所以我更喜欢在主函数中使用只有一个参数的代码

        【讨论】:

        • 最近我更新了 WooCommerce 3.7.0 和 WordPress 5.2.3。我收到内部服务器错误。有没有其他方法可以解决这个问题?
        • 在过滤器中包含参数个数:add_filter( 'woocommerce_cod_process_payment_order_status', 'change_cod_payment_order_status', 10, 2 );
        猜你喜欢
        • 2018-08-23
        • 2023-03-08
        • 2022-09-30
        • 2018-09-19
        • 2019-09-03
        • 2018-09-08
        • 2016-08-04
        • 2018-11-22
        • 2017-04-02
        相关资源
        最近更新 更多