Добавьте имена кодов купонов в Woocommerce View, детали заказа и уведомления по электронной почте. - PullRequest
0 голосов
/ 08 февраля 2019

Я заметил, что в Просмотр сведений о заказе и в подтверждениях по электронной почте он отражает строку скидки, но не указывает действительный использованный код скидки.Кроме того, если код скидки составляет 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 долларов США.

1 Ответ

0 голосов
/ 08 февраля 2019

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

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

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 примененными купонами:

enter image description here


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

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;
}

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

enter image description here


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...