将测量单位附加到 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 文件。
我想在订单确认电子邮件中的数量字段中附加一个单位,更准确地说是在该电子邮件的订单商品 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 文件。