在Woocommerce电子邮件通知上将税款总计添加为单独的行

时间:2018-10-22 12:09:33

标签: php wordpress templates woocommerce email-notifications

我想编辑客户订购后得到的Woocommerce invoice 的内容。我想我必须编辑该文件,该文件位于wp-content / plugins / woocommerce / templates / emails / email-order-details.php

使用以下代码:

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

现在,它按照与总价相同的规则显示增值税详细信息,但我希望将其作为单独的规则,如下所示:

Totaal: €50,00
BTW:    €8,68

有人知道该怎么做吗?

1 个答案:

答案 0 :(得分:0)

如果要所有电子邮件通知上的更改,您将使用以下代码,该代码将显示总计(不显示税)和税在单独的新行中:< / p>

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

        // Change: Display only the gran total amount
        $total_rows['order_total']['value'] = strip_tags( wc_price( $order->get_total() ) );

        // Create a new row for total tax
        $new_row = array( 'order_tax_total' => array(
            'label' => __('BTW:','woocommerce'),
            'value' => strip_tags( wc_price( $order->get_total_tax() ) )
        ) );

        // Add the new created to existing rows
        $total_rows += $new_row;
    }

    return $total_rows;
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。

enter image description here


如果您要仅定位“客户发票”电子邮件通知,则需要对模板emails/email-order-details.php进行更改,以覆盖您的主题。

请先阅读文档:Template structure & Overriding templates via a theme

emails/email-order-details.php模板文件复制到主题的文件夹后,打开/编辑它。

在第64行之后:

            $totals = $order->get_order_item_totals(); 

添加以下内容:

            // Only Customer invoice email notification
            if ( $email->id === 'customer_invoice' ):

            // Change: Display only the gran total amount
            $totals['order_total']['value'] = strip_tags( wc_price( $order->get_total() ) );

            // Create a new row for total tax
            $new_row = array( 'order_tax_total' => array(
                'label' => __('BTW:','woocommerce'),
                'value' => strip_tags( wc_price( $order->get_total_tax() ) )
            ) );

            // Add the new created to existing rows
            $totals += $new_row;

            endif;

经过测试也可以使用...