我正在尝试根据某些订单元删除处理(或完整)电子邮件。
我正在使用 POS 系统并让客户通过客户发票电子邮件付款 - 初始订单状态为待付款。我想 a) 测试是否使用 pos 下订单,b) 删除“正在处理”或“完成”电子邮件。
我似乎无法让 if 语句逻辑起作用。我很确定元键是“_pos”,值是“1”或“0”。
这是我的 wp_postmeta 的 myphp 屏幕截图 https://i.stack.imgur.com/xGobp.png
add_action( 'woocommerce_email', 'removing_POS_emails' );
function removing_POS_emails( $email_class, $order_id ) {
//Remove the Processing email for POS emails
$pos_test = get_post_meta( $order_id, '_pos', true );
if ( $pos_test == "1" ) {
remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );
}
}
我错过了什么吗?后元可以在 woocommerce 电子邮件挂钩中使用吗?
如果我得到的 if 语句正确,我相信我可以删除处理/完整电子邮件,甚至更改电子邮件类别并创建自定义处理电子邮件。
Update (另一个钩子上有一个与 $order 参数相关的错误):
这是正确的方法:
add_filter( 'woocommerce_email_recipient_customer_processing_order', 'conditional_email_notification', 10, 2 );
add_filter( 'woocommerce_email_recipient_customer_completed_order', 'conditional_email_notification', 10, 2 );
function conditional_email_notification( $recipient, $order ) {
if( is_admin() ) return $recipient;
if ( get_post_meta( $order->get_id(), '_pos', true ) ){
return '';
}
return $recipient;
}
此代码位于活动子主题(或主题)的 function.php 文件中。经过测试并有效。
类似的答案:避免 Woocommerce 中特定产品类别的客户电子邮件通知 https://stackoverflow.com/questions/49168377/avoid-customer-email-notification-for-a-specific-product-category-in-woocommerce/49175049#49175049
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)