2016-09-13 5 views
1

У WooCommerce У меня есть настраиваемое поле days_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>"; 
    } 
} 

Теперь я хотел бы, чтобы отобразить это сообщение электронной почты.

Как я могу это достичь?

Благодаря

ответ

2

Вы можете сделать это, изменив немного функции this answer to your previous question и я дополнительно подключить эту функцию, чтобы 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 `страниц тоже.


Ссылки: