在 WooCommerce 中向电子邮件主题添加自定义占位符

Add a custom placeholder to email subject in WooCommerce

我有一个 Woocommerce 商店,我想在接受付款后添加一个 delivery_date

我在名为 delivery_date 的订单部分创建了一个带有日期值的自定义字段。

现在我想将此自定义字段用作电子邮件通知主题中的占位符,例如:

Your order is now {order_status}. Order details are shown below for your reference: deliverydate: {delivery_date}

我认为占位符不是这样工作的,我需要在 php 中更改一些内容,但我不知道在哪里。

如果你想在电子邮件内容中打印 "delivery_date" 的值,那么你可以这样做。

$content = "Your order is now %%order_status%%. Order details are shown below for your reference: deliverydate: %%delivery_date%%";
$search_array = ["{order_status}","{delivery_date}"]
$replace_array = [$valueOfOrderStatus,$valueOfDeliveryDate];
$content = str_replace($search_array, $replace_array, $content);

要在 woocommerce 电子邮件主题中添加自定义活动占位符 {delivery_date},您将使用以下挂钩函数。

您之前会检查,delivery_date 是正确的 post 元键,用于将结帐字段值保存到订单 (检查 wp_postmeta 数据库table 订单 post_id).

代码:

add_filter( 'woocommerce_email_format_string' , 'add_custom_email_format_string', 10, 2 );
function add_custom_email_format_string( $string, $email ) {
    $meta_key    = 'delivery_date'; // The post meta key used to save the value in the order
    $placeholder = '{delivery_date}'; // The corresponding placeholder to be used
    $order = $email->object; // Get the instance of the WC_Order Object
    $value = $order->get_meta($meta_key) ? $order->get_meta($meta_key) : ''; // Get the value

    // Return the clean replacement value string for "{delivery_date}" placeholder
    return str_replace( $placeholder, $value, $string );
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。它应该有效。

然后在 Woocommerce > 设置 > 电子邮件 > "New Order" 通知中,您将能够使用动态占位符 {delivery_date}