如何在WooCommerce的“订单已完成”电子邮件中隐藏采购备注?

时间:2019-06-10 作者:cag8f

对于WooCommerce中的每种产品,我都可以添加购买说明(screenshot). 此购买说明将显示在随后发送给客户的所有电子邮件中。通过定制PHP,我如何在一封特定的电子邮件上隐藏购买说明——在我的案例中是“订单完成”电子邮件。

有WooCommerce提供的钩子我可以使用吗?管理此电子邮件的主要WooCommerce模板是customer-completed-order.php. 但这不允许我只隐藏特定物品的购买说明,它允许我隐藏所有物品的所有详细信息。

或者,是否有办法使用PHP检查我当前正在呈现的特定电子邮件,例如:。

if ($wc_email_template == "order_completed") {
// Execute this code.
}
如果我能做到这一点,那么我的问题就会得到解决。我之所以这么说,是因为存在另一个WooCommerce电子邮件模板,email-order-items.php. 在里面,我确实可以隐藏购买说明。但这适用于我不想要的所有电子邮件。因此,在这个模板中,如果我可以插入一个条件来检查所讨论的电子邮件是否是“订单已完成”的电子邮件,它将解决我的问题。

Possible Solution?

从这个previous post, 也许我可以使用以下内容来检查该电子邮件是否为“订单完成”电子邮件。

$mailer = WC()->mailer();
$mails = $mailer->get_emails();
foreach ( $mails as $mail ) {
     if ( $mail->id == \'customer_completed_order\' ) {
           // Execute my desired code here.
        }
     }
}
但不确定这是否有效。此代码段似乎检查“customer\\u completed\\u order”电子邮件是否存在。但在我的例子中,我试图将该代码插入到PHP模板中,该模板创建了相同的电子邮件,因此听起来“customer\\u completed\\u order”电子邮件还不存在,这意味着该检查将始终失败。

谢谢

1 个回复
最合适的回答,由SO网友:Dan Wich 整理而成

我认为您的代码片段是正确的,只检查了电子邮件的可用性。但您可能仍然可以使用其他方法:WC\\U电子邮件类在发送过程中将$sending设置为true。因此,您可以检查以下内容:

WC()->mailer()->emails["WC_Email_Customer_Completed_Order"]->sending

相关推荐

如何在自定义的PHP文件中使用GET_BLOGINO(‘ADMIN_Email’)?

我如何使用get_bloginfo(\'admin_email\') 在位于父主题根目录中的自定义PHP文件中?我已经分别构建了一个自定义表单和一个PHP邮件脚本,但现在我想用密件抄送将表单数据发送到WP Admin电子邮件地址。 $headers = \"MIME-Version: 1.0\" . \"\\r\\n\"; $headers .= \"Content-type:text/html;charset=UTF-8\" . \"\\r\\n\"; $heade