基于 Woocommerce 中的运输方式的不同电子邮件标题

Posted

技术标签:

【中文标题】基于 Woocommerce 中的运输方式的不同电子邮件标题【英文标题】:Different email heading based on shipping methods in Woocommerce 【发布时间】:2019-04-23 14:26:37 【问题描述】:

所以我想在 WooCommerce 中发送标题略有不同的同一封电子邮件。它使用参数$email_heading 变量来保存当前电子邮件标题的值,所以我认为一个简单的替换就可以了。它没有。我可能完全错过了这里的标记,非常感谢任何帮助。

当他们选择本地取货时,我希望它说您的订单已准备好取货,然后在选择任何其他运输时显示默认值(存储 woocommerce 的电子邮件设置)。

add_filter( "woocommerce_email_heading_customer_completed_order", 'HDM_woocommerce_email_header', 10, 2 );
function HDM_woocommerce_email_header( $email_heading, $email ) 
  if ('customer_completed_order' == $email->id && $order->has_shipping_method('local_pickup') )
      $order_id = $order->get_id();
      $email_heading = '<h1>Your Order Is Ready For Pickup</h1>';
    
      return $email_heading;
    ;

【问题讨论】:

【参考方案1】:

我想知道这是否适用于电子邮件主题:

add_filter( "woocommerce_email_subject_customer_completed_order", 'custom_email_subject', 10, 2 );
function custom_email_subject( $subject, $order ) 
    if ( $order->has_shipping_method('local_pickup') )
        $subject = 'Your Order Is Ready For Pickup';

return $subject;

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

您的代码中有一些错误,例如$email,实际上是$order。此外,您已经在此复合挂钩中定位了 customer_completed_order,因此您不需要在 IF 语句中使用它……

所以试试吧:

add_filter( "woocommerce_email_heading_customer_completed_order", 'custom_email_heading', 10, 2 );
function custom_email_heading( $email_heading, $order ) 
    if ( $order->has_shipping_method('local_pickup') )
        $email_heading = '<h1>Your Order Is Ready For Pickup</h1>';
    
    return $email_heading;

代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

【讨论】:

哦,你真的是最棒的!非常感谢,我为此工作了太长时间。

以上是关于基于 Woocommerce 中的运输方式的不同电子邮件标题的主要内容,如果未能解决你的问题,请参考以下文章

根据运输方式更改 Woocommerce 订单状态

根据不同的运输方式更改 Woocommerce 订单状态

向 Woocommerce 运输方式添加不同的自定义标签

根据 WooCommerce 结帐字段值显示/隐藏运输方式

根据 WooCommerce 结帐字段值显示/隐藏运输方式

根据 Woocommerce 中的运输方式和付款方式添加费用