在Woocommerce中将COD默认订单状态更改为“暂停”,而不是“正在处理”

时间:2018-11-13 12:14:39

标签: php wordpress woocommerce orders payment-method

我需要解决与插件“ 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 ); 

3 个答案:

答案 0 :(得分:2)

you found in Github的代码已经过时,笨拙且复杂,因为现在有了a dedicated filter hook。您最好尝试使用这种轻巧有效的代码,它将“货到付款” 的付款网关(COD)的默认订单状态设置为“保留”

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

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

enter image description here

  

因此,付款网关设置的默认订单状态现在为“暂停”,而不是“正在处理”

答案 1 :(得分:0)

以上两个解决方案相同:

  • @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()

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

答案 2 :(得分:0)

就我而言,

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中表现出色

谢谢!