更改特定WooCommerce电子邮件通知的发件人名称和电子邮件地址。

6
如何在WooCommerce中更改特定电子邮件通知的发件人地址和名称?
例如:
仅更改客户处理订单电子邮件通知的发件人姓名和电子邮件地址。
但并非所有电子邮件通知都需要更改,仅针对特定电子邮件通知。

电子邮件对象作为第二个变量传递给woocommerce_email_from_address过滤器。该对象将具有一个id属性,您可以使用它来有条件地更改特定电子邮件的发件人地址。 - helgatheviking
1个回答

12
发送者名称和电子邮件地址在Woocommerce“电子邮件”设置选项卡的末尾设置: enter image description here 这些字段通过专用过滤器挂钩传递,允许您有条件地更改值。
以下是有条件限制为“客户处理电子邮件通知”的示例:
// Change sender name
add_filter( 'woocommerce_email_from_name', function( $from_name, $wc_email ){
    if( $wc_email->id == 'customer_processing_order' ) 
        $from_name = 'Jack the Ripper';

    return $from_name;
}, 10, 2 );

// Change sender adress
add_filter( 'woocommerce_email_from_address', function( $from_email, $wc_email ){
    if( $wc_email->id == 'customer_processing_order' )
        $from_email = 'jack.the.ripper@freek.com';

    return $from_email;
}, 10, 2 );

这段代码需要放在你的活动子主题 (或主题) 或者任何插件文件的 function.php 文件中。
这段代码已经过测试并且可用。
以下是一些其他 WC_Email Ids,你可以在你的条件语句中使用: - 'customer_completed_order' - 'customer_on_hold_order' - 'customer_refunded_order' - 'customer_new_account' - 'new_order' (管理员通知) - 'cancelled_order' (管理员通知) - 'failed_order' (管理员通知)

非常感谢,问题得到了解决,但是可以用面向对象编程(OOP)实现吗?当我尝试像这样做时: 在构造函数中: add_filter ('woocommerce_email_from_address', [$this,'email_sender_addressess']); 然后类函数: public function email_sender_addressess($from_email,$wc_email){...}。会出现一个错误提示,说第二个参数未传递。有什么想法吗? - Nikola
@Nikola 请尝试使用以下代码:add_filter( 'woocommerce_email_from_address', array( $this, 'email_sender_addressess' ), 10, 2 ); 其中 10 是优先级,2 是函数中的参数数量... 这通常可以解决此问题。对于其他钩子也是同样的道理。 - LoicTheAztec
@LoicTheAztec 感谢您提供的这个代码片段。我正在创建一个自定义插件,只想通过ajax发送电子邮件。但我的问题是如何检查它的id,因为我正在使用自定义函数。我能设置一个id吗? - NewUser
1
我的天啊,你救了命!我唯一的问题是:如果没有你的答案,在WooCommerce文档中哪里能找到这个信息呢? - Igor Bykov
1
我已经看到了你的新问题。回复只允许一个电子邮件地址,这是合乎逻辑的,请考虑一下。 - LoicTheAztec
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接