我一直在尝试找到一种方法,在新订单电子邮件通知的附加栏中添加每件商品的不含税价格。
这是当前显示的内容:
这就是我正在寻找的:
目前的邮件模板是这样的
/*
* @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;
}
我一直在尝试寻找修复程序,但我见过的几乎所有修复程序都需要自定义模板,我希望避免这种情况,以便在升级完成时不需要进行太多维护。我尝试做出任何改变的大多数尝试都导致了某种类型的错误。
要在电子邮件通知的附加列中添加每件商品的不含税价格,只能通过子主题覆盖 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
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>
保存更改。
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>
保存更改。
你已经完成了。
你会得到类似的东西: