停止免费订单的 WooCommerce 管理员电子邮件通知

问题描述

如果订单值为 $0.00,我想停止 woocommerce 电子邮件通知

我使用了这个代码

function restrict_admin_new_order_mail( $recipient,$order ) {
    if( $order->get_total() === '0.00' ) {
        return;
    } else {
        return $recipient;
    }
}
add_filter('woocommerce_email_recipient_new_order','restrict_admin_new_order_mail',1,2);

代码正常运行,但我遇到了这个致命错误,Woocommerce 设置中的所有电子邮件选项都消失了(请参见附加的屏幕截图)。

screenshot

Error Details
=============

[13-Jan-2021 17:34:15 UTC] PHP Fatal error:  Uncaught Error: Call to a member function get_total() on null in C:\Users\joe\Local Sites\staging\app\public\wp-content\themes\flatsome-child\functions.PHP:8
Stack trace:
#0 C:\Users\joe\Local Sites\staging\app\public\wp-includes\class-wp-hook.PHP(289): restrict_admin_new_order_mail('email@gmail....',NULL)
#1 C:\Users\joe\Local Sites\staging\app\public\wp-includes\plugin.PHP(206): WP_Hook->apply_filters('email@gmail....',Array)
#2 C:\Users\joe\Local Sites\staging\app\public\wp-content\plugins\woocommerce\includes\emails\class-wc-email.PHP(399): apply_filters('woocommerce_ema...','email@gmail....',NULL,Object(WC_Email_New_Order))
#3 C:\Users\joe\Local Sites\staging\app\public\wp-content\plugins\woocommerce\includes\admin\settings\class-wc-settings-emails.PHP(294): WC_Email->get_recipient()
#4 C:\Users\joe\Local Sites\staging\app\public\wp-includes\class-wp-hook.PHP(287): WC_Settings_Emails->email_notification_setting(Array)
#5 C:\Users\joe\Local Sites\staging\app\public\wp-includes\ in C:\Users\joe\Local Sites\staging\app\public\wp-content\themes\flatsome-child\functions.PHP on line 8

请问有什么帮助吗? 谢谢

解决方法

看看。

bool value1 = false;
bool value2 = false;
bool value3 = true;
bool value4 = false;

您可以定位不同的电子邮件woocommerce_email_recipient_customer_processing_order

,

为避免此错误,您需要在函数的开头添加此简单行:

shipment_id

我也重新审视了你的代码……试试这个:

if ( ! is_a( $order,'WC_Order' ) ) return $recipient;

代码位于活动子主题(或活动主题)的functions.php 文件中。现在应该可以使用了。