【问题标题】:Woocommerce Sending Duplicate Admin NotificationsWoocommerce 发送重复的管理员通知
【发布时间】:2019-08-08 17:30:09
【问题描述】:

我通过 @LoicTheAztec 实现了这段代码,将所有 COD 订单的默认状态设置为待处理:

add_action( 'woocommerce_thankyou', 'woocommerce_thankyou_change_order_status', 10, 1 );
function woocommerce_thankyou_change_order_status( $order_id ){
    if( ! $order_id ) return;
    $order = wc_get_order( $order_id );
    if( $order->get_status() == 'processing' ) $order->update_status( 'pending' );
} 

添加代码(作为插件)后,Woocommerce 开始发送重复的新订单电子邮件通知。本质上,在创建订单时会发送一个通知(这是正确的),但是当订单被标记为已完成时,会再次发送相同的通知。

我怎样才能阻止这种情况?

【问题讨论】:

    标签: woocommerce


    【解决方案1】:

    您正在生成另一个通知,因为您在 woocommerce 中的默认功能已设置订单状态后更新订单状态。你可以试试下面的代码:

    add_filter( 'woocommerce_cod_process_payment_order_status', 'default_cod_payment_order_status', 10 );
    function default_cod_payment_order_status( $order_status ) {
        return 'pending';
    }
    

    【讨论】:

    • 谢谢奥马尔。我试过这段代码,但没有用。它甚至根本没有将状态更改为“待定”。 ?
    • 哦,等等...我正在查看您的代码并且您正在返回“处理”,所以也许这就是它不起作用的原因。我现在编辑它并检查。 brb...
    • 好的,是的,它本身不起作用。一旦我在代码中更改它,它确实将状态更改为“待处理”,但它根本没有生成任何电子邮件。不确定这是否是相同的代码,但我之前尝试过执行相同操作的代码 - 更改了状态但没有生成任何通知电子邮件。
    • 我不认为这个过滤器应该阻止任何电子邮件的触发。请确保 woocommerce 设置中的电子邮件设置正确,并尝试注释掉您所做的与 woccommerce 相关的其他代码,以确保您没有任何其他代码阻止此类触发器
    • 是的,woocommerce 中的电子邮件设置是正确的(否则它们工作正常),我添加了您作为插件提供的代码,所以我所做的只是激活和停用它。奇怪的是,当我应用您的代码时,根本不会发送电子邮件。我想知道这与状态更改发生的阶段有关吗?
    猜你喜欢
    • 1970-01-01
    • 2017-06-20
    • 2021-11-05
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2020-03-21
    相关资源
    最近更新 更多