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

Я ищу способ добавить дополнительную строку в мои письма с заказом на woocommerce с промежуточным итогом, включая доставку без налогов (или НДС). Я хочу, чтобы эта строка была до налогов. (это должен быть расчет суммы стоимости продукта + стоимость доставки)

поскольку это расчет, это должно быть что-то вроде $ get_total_excl_taxes = $ order-> get_total () - $ order-> get_total_tax ();

Я должен вставить это в email-order-details.php дочерней темы, как я полагаю. Однако там, где я это делаю, это не работает.

Любая помощь будет принята с благодарностью.

<?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>

                    <here??>

                </tr>
                <?php
            }
        }
        if ( $order->get_customer_note() ) {
            ?>
            <tr>
                <th class="td" scope="row" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php esc_html_e( 'Note:', 'woocommerce' ); ?></th>
                <td class="td" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php echo wp_kses_post( wptexturize( $order->get_customer_note() ) ); ?></td>
            </tr>
            <?php
        }
        ?>

person Tim van Slooten    schedule 25.11.2018    source источник


Ответы (1)


Следующая строка добавит новую строку с общей суммой без НДС в итоговых значениях уведомлений по электронной почте:

add_filter( 'woocommerce_get_order_item_totals', 'add_order_total_excl_vat_row', 10, 3 );
function add_order_total_excl_vat_row( $total_rows, $order, $tax_display ) {
    // Only on emails notifications
    if( ! is_wc_endpoint_url() || ! is_admin() ) {

        // Set last total row in a variable and remove it.
        $gran_total = $total_rows['order_total'];
        unset( $total_rows['order_total'] );

        // Insert our new row
        $total_rows['order_total_ev'] = array(
            'label' => __( 'Total Excl. VAT :', 'woocommerce' ),
            'value' => wc_price( $order->get_total() - $order->get_total_tax() ),
        );

        // Set back last total row
        $total_rows['order_total'] = $gran_total;
    }

    return $total_rows;
}

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


Чтобы добавить эту новую строку перед строкой налогов (если она включена в настройках налогов), используйте вместо этого:

add_filter( 'woocommerce_get_order_item_totals', 'custom_order_total_excl_vat_row', 10, 3 );
function custom_order_total_excl_vat_row( $total_rows, $order, $tax_display ) {
    // Only on emails notifications
    if( ! is_wc_endpoint_url() || ! is_admin() ) {

        $new_total_rows = array();

        // Loop through total lines
        foreach( $total_rows as $key => $values ){
            if( $key === 'tax' ){
                $new_total_rows['order_total_et'] = array(
                    'label' => __( 'Total Excl. VAT :', 'woocommerce' ),
                    'value' => wc_price( $order->get_total() - $order->get_total_tax() ),
                );
            }
            $new_total_rows[$key] = $values;
        }

        return $new_total_rows;
    }

    return $total_rows;
}

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

Вы получите что-то вроде:

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

person LoicTheAztec    schedule 25.11.2018
comment
это отлично работает, большое вам спасибо. Единственное, что было бы хорошо, если бы это можно было поставить до налогов, а не после. это возможно? - person Tim van Slooten; 25.11.2018
comment
Я только что проверил, отлично работает. Спасибо еще раз. Он отображается только на странице полученного заказа (после подтверждения заказа). это должно быть только в электронных письмах, верно? Я, конечно, отмечу это как ответ! Благодарность! - person Tim van Slooten; 25.11.2018