我想要过滤woocommerce新订单表单的电子邮件头。我试图用网站管理员的电子邮件地址替换客户的电子邮件地址。我们需要这样做是因为Gmail将新订单标记为垃圾邮件,因为发件人地址与回复地址不同。下面的函数部分起作用:
add_filter( 'woocommerce_email_headers', 'woo_add_reply_to_wc_admin_new_order', 10, 3 );
function woo_add_reply_to_wc_admin_new_order( $headers = '', $id = '', $order ) {
if ( $id == 'new_order' ) {
$reply_to_email = get_option( 'admin_email', '' );
$headers .= "Reply-to: <$reply_to_email>\r\n";
}
return $headers;}
这个函数添加了网站管理员的电子邮件地址,但没有删除客户的电子邮件地址。
有没有人有任何想法如何从回复字段中删除客户的电子邮件?注意:我们仍然需要在订单中记录客户的电子邮件,我们只是不希望它出现在电子邮件头中。
任何帮助都将非常感激!
if($email){}
中(Loic的答案中缺少第4个参数),因为woocommerce_email_headers
被调用以发送邮件(低库存,无库存,缺货),其中$email
变量实际上为空($email_id
也为空),导致PHP致命错误和(根据我的经验)创建重复的WC订单(如果在订单创建时发送了5个低库存通知,则会创建5个重复订单)。 - Kristián Filo