【问题标题】:Change sender name and email address for specific WooCommerce email notifications更改特定 WooCommerce 电子邮件通知的发件人姓名和电子邮件地址
【发布时间】:2018-02-17 10:14:09
【问题描述】:

如何在 WooCommerce 中更改特定电子邮件通知的电子邮件发件人地址和姓名?

例如:
仅为客户处理订单电子邮件通知更改发件人姓名和电子邮件地址。

但并非针对所有电子邮件通知,仅针对特定通知。

【问题讨论】:

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

标签: php wordpress woocommerce orders email-notifications


【解决方案1】:

发件人姓名和电子邮件地址在此处设置(在 Woocommerce“电子邮件”设置选项卡的末尾:

此字段通过专用过滤器挂钩传递,允许您有条件地更改值。

这是一个有条件地限制为“客户处理电子邮件通知”的示例:

// 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 Id: - '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 试试这个:add_filter( 'woocommerce_email_from_address', array( $this, 'email_sender_addressess' ), 10, 2 ); 其中10 是优先级,2 是函数中的参数数量……这通常可以解决这个问题。另一个钩子也一样。
  • tnx 再次。
  • @LoicTheAztec 感谢这个 sn-p。我正在创建一个自定义插件,我只想通过 ajax 发送电子邮件。但我的问题是如何在使用自定义函数时检查它的 id。我也可以设置一个 id 吗?
  • 我的上帝,你拯救了生命!我唯一的问题是:如果你的答案不存在,这到底是写在 woocommerce 的文档中的哪里?有人能找到它吗?
猜你喜欢
  • 2021-05-02
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
  • 2021-11-06
相关资源
最近更新 更多