根据项目自定义字段的最高值在电子邮件上显示自定义通知
Displaying a custom notice on Emails based on item custom field highest value
在 WooCommerce 上,我为每个具有不同(整数)值的产品设置了自定义字段 days_manufacture
。
我也有这段代码在购物车页面上显示一条消息,最高值为 "days of manufacture":
add_action('woocommerce_before_cart', 'days_of_manufacture');
function days_of_manufacture() {
$day_txt = ' ' . __('day', 'your_theme_domain_slug' );
$days_txt = ' ' . __('days', 'your_theme_domain_slug' );
$text = __('Your Order will be produced in: ', 'your_theme_domain_slug' );
$max_days = 0;
foreach( WC()->cart->get_cart() as $cart_item )
if($cart_item['days_manufacture'] > $max_days)
$max_days = $cart_item['days_manufacture'];
if($max_days != 0) {
if ($max_days == 1)
$days_txt = $day_txt;
$output = $text . $max_days . $days_txt;
echo "<div class='woocommerce-info'>$output</div>";
}
}
现在我想在电子邮件中显示此消息。
我怎样才能做到这一点?
谢谢
你可以做到,稍微改变一下 的功能,我另外将此功能挂接到 woocommerce_email_before_order_table
订单通知电子邮件挂钩.
因此,您将用这个函数替换现有函数。您还替换了两个模板中插入的函数 (见下文).
此函数可以处理在模板(和以前一样)和电子邮件通知中显示您的自定义动态消息。
代码如下:
add_action('woocommerce_email_before_order_table', 'days_of_manufacture_view_order_and_email', 99);
function days_of_manufacture_view_order_and_email($order, $type='email') {
$day_txt = ' ' . __('day', 'your_theme_domain_slug' );
$days_txt = ' ' . __('days', 'your_theme_domain_slug' );
$max_days = 0;
// Your customized style for the email template (to adapt for your needs)
$style = 'border:solid 2px #ededed; padding:10px; font-weight:bold;';
// Your customized text goes in here
$text = __('Your Order will be produced in: ', 'your_theme_domain_slug' );
foreach( $order->get_items() as $item )
if(get_post_meta($item['product_id'], 'days_manufacture', true) > $max_days )
$max_days = get_post_meta($item['product_id'], 'days_manufacture', true);
if($max_days != 0) {
if ($max_days == 1)
$days_txt = $day_txt;
$output = $text . $max_days . $days_txt;
// displayed on the email notifications
if($type == 'email')
echo "<div class='woocommerce-info' style='$style'>$output</div>"; // <== Customize the styles if needed
// displayed on the woocommerce templates
else
echo "<div class='woocommerce-info' style='display:block !important;'>$output</div>"; // displayed on the templates
}
}
此代码位于您的活动子主题(或主题)的 function.php 文件中或任何插件文件中。
模板更改
现在在您活动的子主题(或主题)中的两个模板中 woocommerce
templates folder:
您将更改此行:
<?php days_of_manufacture_order_view($order); // <== inserted Here ?>
通过这条线:
<?php days_of_manufacture_view_and_email($order, 'template'); // <== inserted Here ?>
现在自定义通知也显示在电子邮件中,并且仍然适用于 Thankyou
查看订单 页面和
My account > Orders > view order
` 页。
参考文献:
在 WooCommerce 上,我为每个具有不同(整数)值的产品设置了自定义字段 days_manufacture
。
我也有这段代码在购物车页面上显示一条消息,最高值为 "days of manufacture":
add_action('woocommerce_before_cart', 'days_of_manufacture');
function days_of_manufacture() {
$day_txt = ' ' . __('day', 'your_theme_domain_slug' );
$days_txt = ' ' . __('days', 'your_theme_domain_slug' );
$text = __('Your Order will be produced in: ', 'your_theme_domain_slug' );
$max_days = 0;
foreach( WC()->cart->get_cart() as $cart_item )
if($cart_item['days_manufacture'] > $max_days)
$max_days = $cart_item['days_manufacture'];
if($max_days != 0) {
if ($max_days == 1)
$days_txt = $day_txt;
$output = $text . $max_days . $days_txt;
echo "<div class='woocommerce-info'>$output</div>";
}
}
现在我想在电子邮件中显示此消息。
我怎样才能做到这一点?
谢谢
你可以做到,稍微改变一下 woocommerce_email_before_order_table
订单通知电子邮件挂钩.
因此,您将用这个函数替换现有函数。您还替换了两个模板中插入的函数 (见下文).
此函数可以处理在模板(和以前一样)和电子邮件通知中显示您的自定义动态消息。
代码如下:
add_action('woocommerce_email_before_order_table', 'days_of_manufacture_view_order_and_email', 99);
function days_of_manufacture_view_order_and_email($order, $type='email') {
$day_txt = ' ' . __('day', 'your_theme_domain_slug' );
$days_txt = ' ' . __('days', 'your_theme_domain_slug' );
$max_days = 0;
// Your customized style for the email template (to adapt for your needs)
$style = 'border:solid 2px #ededed; padding:10px; font-weight:bold;';
// Your customized text goes in here
$text = __('Your Order will be produced in: ', 'your_theme_domain_slug' );
foreach( $order->get_items() as $item )
if(get_post_meta($item['product_id'], 'days_manufacture', true) > $max_days )
$max_days = get_post_meta($item['product_id'], 'days_manufacture', true);
if($max_days != 0) {
if ($max_days == 1)
$days_txt = $day_txt;
$output = $text . $max_days . $days_txt;
// displayed on the email notifications
if($type == 'email')
echo "<div class='woocommerce-info' style='$style'>$output</div>"; // <== Customize the styles if needed
// displayed on the woocommerce templates
else
echo "<div class='woocommerce-info' style='display:block !important;'>$output</div>"; // displayed on the templates
}
}
此代码位于您的活动子主题(或主题)的 function.php 文件中或任何插件文件中。
模板更改
现在在您活动的子主题(或主题)中的两个模板中 woocommerce
templates folder:
您将更改此行:
<?php days_of_manufacture_order_view($order); // <== inserted Here ?>
通过这条线:
<?php days_of_manufacture_view_and_email($order, 'template'); // <== inserted Here ?>
现在自定义通知也显示在电子邮件中,并且仍然适用于 Thankyou
查看订单 页面和
My account > Orders > view order
` 页。
参考文献: