如何仅移除WooCommerce客户完成订单邮件中的订单详情表
如何仅移除WooCommerce客户完成订单邮件中的订单详情表
你的原有代码确实能移除订单详情表,但因为没加条件判断,所以会影响所有类型的邮件(包括管理员收件的)。要实现只针对客户的完成订单邮件做移除,只需要在函数里增加两个关键判断即可:
function so_39251827_remove_order_details( $order, $sent_to_admin, $plain_text, $email ){ // 仅在非管理员收件、且是客户完成订单邮件时执行移除 if ( !$sent_to_admin && $email->id === 'customer_completed_order' ) { $mailer = WC()->mailer(); remove_action( 'woocommerce_email_order_details', array( $mailer, 'order_details' ), 10, 4 ); } } add_action('woocommerce_email_order_details','so_39251827_remove_order_details', 5, 4 );
代码说明:
!$sent_to_admin:这个条件确保我们只处理发给客户的邮件,不会影响管理员收到的订单邮件$email->id === 'customer_completed_order':精准锁定「客户完成订单」这个特定邮件模板,避免误删其他客户邮件(比如订单确认、处理中邮件)里的订单详情表
这样修改后,管理员收到的完成订单邮件依然会保留订单详情表,只有客户收到的对应邮件会移除该表格。
内容的提问来源于stack exchange,提问作者Xwebyna
相关产品推荐
相关产品推荐

