在Woocommerce电子邮件通知中隐藏特定产品类别的价格项目

时间:2017-10-28 21:35:53

标签: php wordpress woocommerce categories email-notifications

我正在使用WooCommerce 3.1.1而我正在尝试更换"价格金额"对于客户和管理员的新订单通知中的特定产品类别的一些文本。

我几乎尝试了所有内容,但我无法找到电子邮件通知的订单商品明细表。

此电子邮件目前看起来像这样:

Email

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

您需要首先阅读此官方文档,以了解Overriding WooCommerce Templates via your active Theme

您需要更改和覆盖的模板是emails/email-order-items.php

在WC版的第58行(或WC版本3.2 +中的第55行),您将替换:

<td class="td" style="text-align:<?php echo $text_align; ?>; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;"><?php echo $order->get_formatted_line_subtotal( $item ); ?></td>

通过此(您应该设置自己的类别和替换文字字符串)

<?php
## ---- Variables to define (below)---- ##

$categories = array( 'clothing' ); // The Product categories coma separated (IDs slugs or names)
$replacement_text = __( 'Replacement text (here)' ); // The replacement text

// Getting the email ID global variable (From our function below)
$refNameGlobalsVar = $GLOBALS;
$email_id = $refNameGlobalsVar['email_id_str'];

// When matching product categories, "New Order", "Processing" and "On Hold" email notifications
if( has_term( $categories, 'product_cat', $product->get_id() )
&& ( $email_id == 'new_order' || $email_id == 'customer_processing_order' || $email_id == 'customer_on_hold_order' ) )
    $formated_line_subtotal = $replacement_text;
else
    $formated_line_subtotal = $order->get_formatted_line_subtotal( $item );
?>
<td class="td" style="text-align:<?php echo $text_align; ?>; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;"><?php echo $formated_line_subtotal; ?></td>

要获取电子邮件ID,您需要将其添加到活动子主题(或活动主题)的function.php文件中:

// Setting the email_id as a global variable
add_action('woocommerce_email_before_order_table', 'the_email_id_as_a_global', 1, 4);
function the_email_id_as_a_global($order, $sent_to_admin, $plain_text, $email){
    $GLOBALS['email_id_str'] = $email->id;
}

现在,当产品类别匹配时,您将得到此信息,并且对于&#34; New Order&#34; (管理员),&#34;客户待命订单&#34;和&#34;客户处理订单&#34;仅限电子邮件通知:

enter image description here