当送货方式不是 "Local Pickup" 时禁用 WooCommerce 新订单电子邮件通知
Disable WooCommerce new order email notification when shipping method is NOT "Local Pickup"
仅当客户选择“本地取件”作为送货方式时,我才尝试发送 Woocommerce 新订单电子邮件。
为了实现这一点,我在 WooCommerce 设置中禁用了新订单电子邮件通知,同时在满足送货方式 = 本地取货条件的情况下尝试使用过滤器启用新订单电子邮件。
到目前为止我无法完成它。这是我的过滤器:
add_filter( 'woocommerce_email_enabled_new_order', 'lds_only_send_mail_when_shipping_is_pickup', 10, 2 );
function lds_only_send_mail_when_shipping_is_pickup($order) {
if (!empty($order) && $order->get_shipping_method() === 'local_pickup') {
return true;
}
}
不确定我做错了什么?
由于 woocommerce_email_enabled_{id} 的第一个参数是可选的,我认为满足条件时 return true 就足够了。
无需对 WooCommerce 设置进行任何更改
如果订单送货方式不等于“本地取货”,要禁用 WooCommerce 新订单电子邮件通知,您可以使用 woocommerce_email_recipient_new_order
钩子
所以你得到:
function filter_woocommerce_email_recipient_new_order( $recipient, $order = false ) {
if ( ! $order || ! is_a( $order, 'WC_Order' ) ) return $recipient;
// Get shipping method
$shipping_method = $order->get_shipping_method();
// NOT equal (Note: this should be adjusted to the shipping method in your site language)
// Such as: 'Afhalen' for dutch, etc...
if ( $shipping_method != 'Local Pickup' ) {
$recipient = '';
}
return $recipient;
}
add_filter( 'woocommerce_email_recipient_new_order', 'filter_woocommerce_email_recipient_new_order', 10, 2 );
仅当客户选择“本地取件”作为送货方式时,我才尝试发送 Woocommerce 新订单电子邮件。
为了实现这一点,我在 WooCommerce 设置中禁用了新订单电子邮件通知,同时在满足送货方式 = 本地取货条件的情况下尝试使用过滤器启用新订单电子邮件。
到目前为止我无法完成它。这是我的过滤器:
add_filter( 'woocommerce_email_enabled_new_order', 'lds_only_send_mail_when_shipping_is_pickup', 10, 2 );
function lds_only_send_mail_when_shipping_is_pickup($order) {
if (!empty($order) && $order->get_shipping_method() === 'local_pickup') {
return true;
}
}
不确定我做错了什么?
由于 woocommerce_email_enabled_{id} 的第一个参数是可选的,我认为满足条件时 return true 就足够了。
无需对 WooCommerce 设置进行任何更改
如果订单送货方式不等于“本地取货”,要禁用 WooCommerce 新订单电子邮件通知,您可以使用 woocommerce_email_recipient_new_order
钩子
所以你得到:
function filter_woocommerce_email_recipient_new_order( $recipient, $order = false ) {
if ( ! $order || ! is_a( $order, 'WC_Order' ) ) return $recipient;
// Get shipping method
$shipping_method = $order->get_shipping_method();
// NOT equal (Note: this should be adjusted to the shipping method in your site language)
// Such as: 'Afhalen' for dutch, etc...
if ( $shipping_method != 'Local Pickup' ) {
$recipient = '';
}
return $recipient;
}
add_filter( 'woocommerce_email_recipient_new_order', 'filter_woocommerce_email_recipient_new_order', 10, 2 );