Настройка электронных писем WooCommerce через панель управления WordPress не всегда является легкой и возможной. Например, вы не можете редактировать или добавлять контент в них, если не знакомы с кодом. Но если знакомы с кодом, добавление данных в электронные письма WooCommerce на самом деле не сложная задача.
Вот быстрый пример, который поможет вам научиться добавлять контент в любое электронное письмо заказа WooCommerce по умолчанию.
В данном примере мы добавили рекламное сообщение с призывом перейти на сайт. Содержимое добавили в письмо обработки заказа клиента в WooCommerce:
add_action( 'woocommerce_email_before_order_table', 'genius_add_content_specific_email', 20, 4 );
function genius_add_content_specific_email( $order, $sent_to_admin, $plain_text, $email ) {
if ( $email->id == 'customer_processing_order' ) {
echo '<h2 class="email-upsell-title">Get 20% off</h2><p class="email-upsell-p">Thank you for making this purchase! Come back and use the code "<strong>Back4More</strong>" to receive a 20% discount on your next purchase! Click here to continue shopping.</p>';
}
}
Используя тот же сниппет выше, вы можете нацелиться на разные письма, изменив идентификатор электронной почты.
if ( $email->id == 'cancelled_order' ) {}
if ( $email->id == 'customer_completed_order' ) {}
if ( $email->id == 'customer_invoice' ) {}
if ( $email->id == 'customer_new_account' ) {}
if ( $email->id == 'customer_note' ) {}
if ( $email->id == 'customer_on_hold_order' ) {}
if ( $email->id == 'customer_refunded_order' ) {}
if ( $email->id == 'customer_reset_password' ) {}
if ( $email->id == 'failed_order' ) {}
if ( $email->id == 'new_order' ) {}
Как добавить сетку подходящих продуктов в тело письма?
Кроме статического текста, иногда может потребоваться передать в тело письма динамические данные, например похожие товары, которые могут заинтересовать клиента сделать повторную покупку.
Добиться этого можно очень легко, добавив данный PHP код в файл functions.php вашей темы.
add_action( 'woocommerce_email_after_order_table', 'genius_add_product_grid_specific_email', 20, 4 );
function genius_add_product_grid_specific_email( $order, $sent_to_admin, $plain_text, $email ) {
if ( $email->id == 'customer_processing_order' ) {
$related = array();
foreach ( $order->get_items() as $item_id => $item ) {
$related = array_merge( wc_get_related_products( $item->get_product_id() ), $related );
}
if ( ! $related ) return;
shuffle( $related );
$related = array_unique( $related );
echo '<h2>Related Products</h2>';
$html = '';
$col = 1;
$cols = 3;
$limit = 6;
$html .= '<div><table style="table-layout:fixed;width:100%;"><tbody>';
foreach ( array_slice( $related, 0, $limit ) as $product_id ) {
$product = wc_get_product( $product_id );
$html .= ( $col + $cols - 1 ) % $cols === 0 ? '<tr>' : '';
$html .= '<td style="text-align:center;vertical-align:bottom">';
$html .= $product->get_image();
$html .= '<h3 style="text-align:center">' . $product->get_title() . '</h3>';
$html .= '<p>' . $product->get_price_html() . '</p>';
$html .= '<p><a href="' . get_permalink( $product_id ) . '">' . __( 'Read more', 'woocommerce' ) . '</a></p></td>';
$html .= $col % $cols === 0 ? '</tr>' : '';
$col++;
}
$html .= '</tbody></table></div>';
echo $html;
}
}
Можно добавить контент в любое письмо WooCommerce. В данном случае я добавляю контент в письмо об обработке заказа клиента, но вы можете это сделать только в письме об успешном завершении заказа или во всех письмах.
В этом коде я вычисляю связанные продукты из товаров заказа. Вы можете использовать собственный список идентификаторов продуктов, если хотите — просто удалите вычисления $related
и измените выражение iterable_expression в цикле foreach с «array_slice ($related, 0, $limit)» на «array (123, 456, 789)», где 123, 456 и 789 — это идентификаторы продуктов, которые вы хотите показать.
Я отображаю 3 столбца и 2 строки продуктов. Измените $cols = 3
и $limit = 6
в соответствии с вашими требованиями ($cols = 4 и $limit = 4 дадут вам 4 товара в 1 строке).