Добавьте имена кодов купонов в Woocommerce View. Детали заказа и уведомления по электронной почте.

Я заметил, что в Просмотр сведений о заказе и в подтверждениях по электронной почте он отражает строку скидки, но не указывает действительный использованный код скидки. Кроме того, если код скидки составляет 0,00 долларов США (иногда мы используем код 0 долларов США для специальных целей отслеживания), он даже не будет отображать код вообще. Я провел весь день, пытаясь найти решение — кто-нибудь может дать некоторые рекомендации по этому поводу? Благодарю.

Я получил это до сих пор, чтобы получить действительный код купона:

add_action( 'woocommerce_order_details_after_order_table', 'custom_woocommerce_coupon_line' );
function custom_woocommerce_coupon_line( $order_id ) {
$order    = wc_get_order( $order_id );

// An order can have no used coupons or also many used coupons
$coupons  = $order->get_used_coupons();
$coupons  = count($coupons) > 0 ? implode(',', $coupons) : '';
echo $coupons;
}

Но не могу понять, как поместить его в строку «Скидка» … и почему строка «Скидка» даже не появляется, когда это предмет за 0 долларов с использованным кодом за 0 долларов.

2

Решение

обновленныйОбработка скидок с нулевым значением

Следующий код будет после строки «скидка» в строке итогов заказа, отображая примененные купоны к заказу:

add_filter( 'woocommerce_get_order_item_totals', 'add_coupons_codes_line_to_order_totals_lines', 10, 3 );
function add_coupons_codes_line_to_order_totals_lines( $total_rows, $order, $tax_display ) {
// Exit if there is no coupons applied
if( sizeof( $order->get_used_coupons() ) == 0 )
return $total_rows;

$new_total_rows = []; // Initializing

foreach($total_rows as $key => $total ){
$new_total_rows[$key] = $total;

if( $key == 'discount' ){
// Get applied coupons
$applied_coupons = $order->get_used_coupons();
// Insert applied coupon codes in total lines after discount line
$new_total_rows['coupon_codes'] = array(
'label' => __('Applied coupons:', 'woocommerce'),
'value' => implode( ', ', $applied_coupons ),
);
}
}

return $new_total_rows;
}

Отображение в представлении заказа клиента с 2 примененными купонами:

введите описание изображения здесь


Дополнительная версия кода: Для обработки примененных купонов с нулевой суммой скидки используйте это вместо:

add_filter( 'woocommerce_get_order_item_totals', 'add_coupons_codes_line_to_order_totals_lines', 10, 3 );
function add_coupons_codes_line_to_order_totals_lines( $total_rows, $order, $tax_display ) {
$has_used_coupons = sizeof( $order->get_used_coupons() ) > 0 ? true : false;

// Exit if there is no coupons applied
if( ! $has_used_coupons )
return $total_rows;

$new_total_rows  = []; // Initializing
$applied_coupons = $order->get_used_coupons(); // Get applied coupons

foreach($total_rows as $key => $total ){
$new_total_rows[$key] = $total;

// Adding the discount line for orders with applied coupons and zero discount amount
if( ! isset($total_rows['discount']) && $key === 'shipping' ) {
$new_total_rows['discount'] = array(
'label' => __( 'Discount:', 'woocommerce' ),
'value'    => wc_price(0),
);
}

// Adding applied coupon codes line
if( $key === 'discount' || isset($new_total_rows['discount']) ){
// Get applied coupons
$applied_coupons = $order->get_used_coupons();
// Insert applied coupon codes in total lines after discount line
$new_total_rows['coupon_codes'] = array(
'label' => __('Applied coupons:', 'woocommerce'),
'value' => implode( ', ', $applied_coupons ),
);
}
}

return $new_total_rows;
}

Отображать в уведомлениях по электронной почте купон с нулевой скидкой:

введите описание изображения здесь


Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector