将测量单位附加到 WooCommerce 电子邮件通知中的数量字段

Append a measuring unit to the quantity field in WooCommerce email notifications

我想在订单确认电子邮件中的数量字段中附加一个单位,更准确地说是在该电子邮件的订单商品 table 中 (email-order-details.php)

见截图:


我尝试添加 PHP

这行
`<?php echo '<p>VE</p>'; ?>`

进入模板文件中的HTMLtable,现在我的代码是这样的:

<div style="margin-bottom: 40px;">
<table class="td" cellspacing="0" cellpadding="6" style="width: 100%; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;" border="1">
    <thead>
        <tr>
            <th class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php esc_html_e( 'Product', 'woocommerce' ); ?></th>
            <th class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php esc_html_e( 'Quantity', 'woocommerce' ); ?> <?php echo '<p>VE</p>'; ?></th>
            <th class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php esc_html_e( 'Price', 'woocommerce' ); ?></th>
        </tr>
    </thead>
    <tbody>
        <?php
        echo wc_get_email_order_items( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
            $order,
            array(
                'show_sku'      => $sent_to_admin,
                'show_image'    => false,
                'image_size'    => array( 32, 32 ),
                'plain_text'    => $plain_text,
                'sent_to_admin' => $sent_to_admin,
            )
        );
        ?>
    </tbody>

但是我的调整没有显示在正确的位置。任何人都可以帮忙解决这个问题并向我提示正确的方向吗?

不需要 edit/overwrite 模板文件,因为您可以使用 woocommerce_email_order_item_quantity 过滤器钩子

所以你得到:

function filter_woocommerce_email_order_item_quantity( $qty_display, $item ) {
    $qty_display = $qty_display . ' VE';

    return $qty_display; 
}
add_filter( 'woocommerce_email_order_item_quantity', 'filter_woocommerce_email_order_item_quantity', 10, 2 );

可选: 如果您不想将此应用于所有 e-mail 通知,而是针对特定通知,您可以使用:

// Setting the email_is as a global variable
function action_woocommerce_email_before_order_table( $order, $sent_to_admin, $plain_text, $email ) {           
    $GLOBALS['email_id_str'] = $email->id;
}
add_action( 'woocommerce_email_before_order_table', 'action_woocommerce_email_before_order_table', 10, 4 );
 
function filter_woocommerce_email_order_item_quantity( $qty_display, $item ) {
    // Getting the email ID global variable
    $refNameGlobalsVar = $GLOBALS;
    $email_id = isset( $refNameGlobalsVar['email_id_str'] ) ? $refNameGlobalsVar['email_id_str'] : '';

    // Targeting specific email. Multiple statuses can be added, separated by a comma
    if ( in_array( $email_id, array( 'new_order' ) ) ) {
        $qty_display = $qty_display . ' VE';
    }

    return $qty_display; 
}
add_filter( 'woocommerce_email_order_item_quantity', 'filter_woocommerce_email_order_item_quantity', 10, 2 ); 

另见:


代码进入活动子主题(或活动主题)的 functions.php 文件。