Woocommerce 如何在新订单电子邮件中插入一列以显示不含增值税的商品价格?

问题描述 投票:0回答:1

我一直在尝试找到一种方法,在新订单电子邮件通知的附加栏中添加每件商品的不含税价格。

这是当前显示的内容:

Current customer message

这就是我正在寻找的:

Desired Customer message

目前的邮件模板是这样的

/*
 * @hooked WC_Emails::email_header() Output the email header
 */
do_action( 'woocommerce_email_header', $email_heading, $email ); ?>

<?php /* translators: %s: Customer billing full name */ ?>
<p><?php printf( esc_html__( 'You’ve received the following order from %s:', 'woocommerce' ), $order->get_formatted_billing_full_name() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></p>
<?php

/*
 * @hooked WC_Emails::order_details() Shows the order details table.
 * @hooked WC_Structured_Data::generate_order_data() Generates structured data.
 * @hooked WC_Structured_Data::output_structured_data() Outputs structured data.
 * @since 2.5.0
 */
do_action( 'woocommerce_email_order_details', $order, $sent_to_admin, $plain_text, $email );

/*
 * @hooked WC_Emails::order_meta() Shows order meta data.
 */
do_action( 'woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text, $email );

/*
 * @hooked WC_Emails::customer_details() Shows customer details
 * @hooked WC_Emails::email_address() Shows email address
 */
do_action( 'woocommerce_email_customer_details', $order, $sent_to_admin, $plain_text, $email );

/**
 * Show user-defined additional content - this is set in each email's settings.
 */
if ( $additional_content ) {
    echo wp_kses_post( wpautop( wptexturize( $additional_content ) ) );
}

/*
 * @hooked WC_Emails::email_footer() Output the email footer
 */
do_action( 'woocommerce_email_footer', $email );

如您所见,我没有自定义电子邮件模板,我已成功使用源过滤器添加了一行不包括总额税的行,但我无法将其调整到列中。

//Adding excluding tax row to order email
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 ) {
    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;
}

我一直在尝试寻找修复程序,但我见过的几乎所有修复程序都需要自定义模板,我希望避免这种情况,以便在升级完成时不需要进行太多维护。我尝试做出任何改变的大多数尝试都导致了某种类型的错误。

php woocommerce orders items email-notifications
1个回答
0
投票

要在电子邮件通知的附加列中添加每件商品的不含税价格,只能通过子主题覆盖 WooCommerce 模板来完成。

涉及的模板位于“templates”文件夹内的 WooCommerce 插件中:

  • emails/email-order-details.php
  • emails/email-order-items.php

您需要将这 2 个模板文件复制到您的子主题中的“woocommerce”文件夹中,例如:

  • yourchildtheme/woocommerce/emails/email-order-details.php
  • yourchildtheme/woocommerce/emails/email-order-items.php

1)打开/编辑复制的
email-order-details.php
模板文件:

第 1 步 - 替换第 72 行:

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

与:

<td class="td" 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['value'] ); ?></td>

第 2 步 - 替换第 81 行:

<td class="td" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php echo wp_kses_post( nl2br( wptexturize( $order->get_customer_note() ) ) ); ?></td>       

与:

<td class="td" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php echo wp_kses_post( nl2br( wptexturize( $order->get_customer_note() ) ) ); ?></td>

第 3 步 - 在第 43 行之后插入:

<th class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php esc_html_e( 'Price excl. VAT', 'woocommerce' ); ?></th>

保存更改。


2)打开/编辑复制的
email-order-items.php
模板文件:

在第 84 行后插入:

        <td class="td" style="text-align:<?php echo esc_attr( $text_align ); ?>; vertical-align:middle; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;">
            <?php echo wp_kses_post( $order->get_formatted_line_subtotal( $item, 'excl' ) ); ?>
        </td>

保存更改。

你已经完成了。

你会得到类似的东西:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.