Я создал плагин, который добавляет комиссию к заказу от WooCommerce.Я добавляю эту плату к заказу с помощью метода wc_add_order_item с order_item_type 'fee'.Проблема, которую я имею, состоит в том, что плата не отображается в электронном письме, которое отправляется клиенту, когда тот заказчик разместил заказ.Если я правильно понимаю, WooCommerce обычно добавляет все сборы и стоимость доставки в <tfoot>
из email-order-details.php с помощью $ order-> get_order_item_totals ();и зацикливается на них.
Странно то, что, пытаясь найти решение, я наткнулся на 'woocommerce_order_status_pending_to_processing_notification' hook , этот хук (если я правильно понимаю) срабатывает правильнодо того, как письмо будет отправлено пользователю.При обратном вызове этого хука у вас будет идентификатор заказа, и я вызвал этот хук в файле functions.php из моей темы.В обратном вызове я искал правильный порядок и использовал это, чтобы проверить, что было в $ order-> get_order_item_totals ().Я ожидал, что были только основные вещи, и моя добавленная плата не будет обнаружена, кроме этого.
Как это возможно, что хотя мой платеж отображается в $ order-> get_order_item_totals () до того, как письмо отправлено клиенту, но WooCommerce не будет зацикливаться на нем в email-order-details.php?Или я что-то упустил?Какие-нибудь мысли?
Конечная цель заключается в том, чтобы моя электронная плата была отправлена клиенту по электронной почте.
Для справки это цикл в email-order-details.php:
$totals = $order->get_order_item_totals();
if ( $totals ) {
$i = 0;
foreach ( $totals as $total ) {
$i++;
?>
<tr>
<th class="td" scope="row" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo wp_kses_post( $total['label'] ); ?></th>
<td class="td" style="text-align:<?php echo esc_attr( $text_align ); ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo wp_kses_post( $total['value'] ); ?></td>
</tr>
<?php
}
}