Добавление цены за единицу товара в Email’ы

В одном из моих предыдущих уроков я показывал, как можно добавить какую-либо информацию в письма WooCommerce, которые он отправляет своим клиентам и администраторам. И в комментариях к записи меня просили (и не раз) показать, как добавить в письма цену за единицу товара.

Окей, вот вам три способа.

Ребят, на сайте нет и не будет рекламы, лучший способ поддержать меня – учиться по моим видеокурсам и я рекомендую вам свой курс по созданию темы WooCommerce!

Способ 1. Переписываем email-order-items.php

Почему перезапись шаблонов? А потому что в WooCommerce эта таблица с товарами заказа захардкодена в шаблон и её не изменить хуками.

Про перезапись шаблонов WooCommerce можно, и даже нужно почитать тут. Если прямо совсем лень, то коротко – мы не изменяем (ни в коем случае) плагин WooCommerce, мы создаём темплейты в нашей теме.

Кроме того, этот первый способ чуть более сложный в реализации, поэтому могу даже сразу порекомендовать Способ 2 и Способ 3.

Погнали:

  1. Сначала копируем файл /woocommerce/templates/emails/email-order-items.php в тему /тема/woocommerce/emails/email-order-items.php
  2. Потом открываем его и можем попробовать вручную поменять таблицу, добавляем эту строчку:
<td class="td"><?php echo wc_price( ( $item->get_total() / $item->get_quantity() ) ) ?></td>

Кстати, функция wc_price() форматирует цену, добавляя знак валюты и не только.

  1. Сначала копируем файл /woocommerce/templates/emails/email-order-details.php в тему /тема/woocommerce/emails/email-order-details.php
  2. Добавляем строчку в <thead> таблицы в начале файла:
<th class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php esc_html_e( 'Price', 'woocommerce' ); ?></th>
  1. А колонку «Price» переименовываем в «Total».

Возможно этот вариант с точки зрения изменений в коде не самый оптимальный, но вы зато чекайте результат!

добавляем цену за единицу товара в Email клиенту и администратору WooCommerce
Чекайте

Следующие два способа посвящены тем, кто не хочет перезаписывать стандартные шаблоны WooCommerce и делать при помощи хуков.

Способ 2. Добавляем цену за единицу товара прямо в колонку с количеством

Попробуем это достичь хуком woocommerce_email_order_item_quantity:

add_filter( 'woocommerce_email_order_item_quantity', 'truemisha_quantity_and_price', 25, 2 );
 
function truemisha_quantity_and_price( $qty, $item ) {
 
	$price = wc_price( ( $item->get_total() / $item->get_quantity() ) );
 
	return $price . '×' . $qty;
 
}

Если не знаете, куда вставлять код, то это руководство для вас.

цена за единицу товара в колонке с количеством в письмах WooCommerce

Способ 3. Отображаем в колонке с ценой цену за единицу товара, а не общую стоимость

Возможно кому-то вообще такой вариант будет самым удобным! 💪🏼

Принцип, что и во втором способе – скопировать код, вставить код:

add_filter( 'woocommerce_order_formatted_line_subtotal', 'truemisha_price_not_total', 25, 2 );
 
function truemisha_price_not_total( $subtotal, $item ) {
 
	$price = wc_price( ( $item->get_total() / $item->get_quantity() ) );
 
	return $price;
 
}

Как вставлять? Вот так.

цена вместо стоимости товара в email о заказе WooCommerce

Также хочу поблагодарить вас за ваши комментарии и за идеи для новых постов! 🙏🏼

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Комментарии — 7

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал