О том как добавить произвольные поля можно почитать в разделе Руководство по Advanced Custom Fields.
Сначала приведу пример кода, потом подробно его рассмотрим:
function the_custom_field( $item_id, $item, $order, $plain_text){
if( $color = get_field( 'color', $item->get_product_id() )) {
echo $color;
}
}
add_action('woocommerce_order_item_meta_start', 'the_custom_field', 20, 4);
За вывод списка товаров в письме отвечает шаблон email-order-items.php
. Если посмотреть в код, то мы увидим несколько хуков (такие места в коде, куда мы можем вклинить выполнение своих функций).
// allow other plugins to add additional product information here.
do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $order, $plain_text );
// allow other plugins to add additional product information here.
do_action( 'woocommerce_order_item_meta_end', $item_id, $item, $order, $plain_text );
У меня между ними ничего не выводится, поэтому я могу использовать любой. У вас могут выводиться атрибуты товаров, поэтому поэкспериментируйте, чтобы определить в какой именно добавиться вывод кода.
Далее, когда мы знаем какой хук использовать (например, woocommerce_order_item_meta_start
) и какие параметры но принимает ($item_id, $item, $order, $plain_text
), можем написать функцию вывода атрибута из ACF (тот код, который я привел в самом начале).
Поместить её нужно, как обычно, в файл functions.php
вашей темы.
add_action('woocommerce_order_item_meta_start', 'the_custom_field', 20, 4);
- эта строка связывает нашу функцию the_custom_field
и хук woocommerce_order_item_meta_start
.
Параметр "10" отвечает за приоритет. Если несколько функций привязано к хуку, то первым выведется тот, у которого это число меньше.
Параметр "4" отвечает за то, сколько параметров передается нашей функции из хука. Данный хук передает 4 параметра - $item_id, $item, $order, $plain_text
. И эти же параметры мы указываем при создании функции function the_custom_field( $item_id, $item, $order, $plain_text)
Теперь посмотрим, что происходит внутри:
if( $color = get_field( 'color', $item->get_product_id() )) {
echo $color;
}
Тут буквально написано, что мы получаем поле с именем color
для товара с id равным $item->get_product_id()
. И если такое поле существует, то выводим его содержимое. Можете подробнее прочитать про Описание функции get_field()
Если мы заглянем в файлы шаблонов WooCommerce, то увидим, что этот Хук содержится не только в шаблоне письма, но и в шаблонах оформления заказа, и на странице, которая выводится с подтверждением, после оформления заказа. То есть внеся изменения через хук информация в форме заказа и далее в цепочке заказа обновится автоматически. Это надо помнить и при необходимости поменять шаблоны.
Если письма с сайта не приходят, можно попробовать отправлять из через почтовый сервер gmail. Для…
jQuery аудио плейер на сайт для нескольких треков с кнопкой Play/Pause
Favicon Фавиконка это маленькая пиктограмма сайта, нужна для отображения на вкладке браузера и в закладках.…
При входе в админку происходит редирект на ту же страницу входа. Эта статья для вас,…
Иногда можно получить такую ошибку: RuntimeException: failed to get url ... No working transport found…
Перед запуском wp-cli вам потребуется скачать и установить cygwin Весь wp-cli это один файл, который…