email-order-items.php
<?php
/**
* Email Order Items (plain)
*
* This template can be overridden by copying it to yourtheme/woocommerce/emails/plain/email-order-items.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see https://woocommerce.com/document/template-structure/
* @package WooCommerce\Templates\Emails\Plain
* @version 9.8.0
*/
use Automattic\WooCommerce\Utilities\FeaturesUtil;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
$email_improvements_enabled = FeaturesUtil::feature_is_enabled( 'email_improvements' );
foreach ( $items as $item_id => $item ) :
if ( apply_filters( 'woocommerce_order_item_visible', true, $item ) ) {
$product = $item->get_product();
$sku = '';
$purchase_note = '';
if ( is_object( $product ) ) {
$sku = $product->get_sku();
$purchase_note = $product->get_purchase_note();
}
if ( $email_improvements_enabled ) {
/**
* Email Order Item Name hook.
*
* @since 2.1.0
* @since 2.4.0 Added $is_visible parameter.
* @param string $product_name Product name.
* @param WC_Order_Item $item Order item object.
* @param bool $is_visible Is item visible.
*/
$product_name = apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false );
/**
* Email Order Item Quantity hook.
*
* @since 2.4.0
* @param int $quantity Item quantity.
* @param WC_Order_Item $item Item object.
*/
$product_name .= ' × ' . apply_filters( 'woocommerce_email_order_item_quantity', $item->get_quantity(), $item );
echo wp_kses_post( str_pad( wp_kses_post( $product_name ), 40 ) );
echo ' ';
echo esc_html( str_pad( wp_kses( $order->get_formatted_line_subtotal( $item ), array() ), 20, ' ', STR_PAD_LEFT ) ) . "\n";
if ( $show_sku && $sku ) {
echo esc_html( '(#' . $sku . ")\n" );
}
} else {
// phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped
/**
* Email Order Item Name hook.
*
* @since 2.1.0
* @since 2.4.0 Added $is_visible parameter.
* @param string $product_name Product name.
* @param WC_Order_Item $item Order item object.
* @param bool $is_visible Is item visible.
*/
echo wp_kses_post( apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false ) );
if ( $show_sku && $sku ) {
echo ' (#' . $sku . ')';
}
/**
* Email Order Item Quantity hook.
*
* @since 2.4.0
* @param int $quantity Item quantity.
* @param WC_Order_Item $item Item object.
*/
echo ' X ' . apply_filters( 'woocommerce_email_order_item_quantity', $item->get_quantity(), $item );
echo ' = ' . $order->get_formatted_line_subtotal( $item ) . "\n";
// phpcs:enable WordPress.Security.EscapeOutput.OutputNotEscaped
}
// allow other plugins to add additional product information here.
do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $order, $plain_text );
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo strip_tags(
wc_display_item_meta(
$item,
array(
'before' => "\n- ",
'separator' => "\n- ",
'after' => '',
'echo' => false,
'autop' => false,
)
)
);
// allow other plugins to add additional product information here.
do_action( 'woocommerce_order_item_meta_end', $item_id, $item, $order, $plain_text );
}
// Note.
if ( $show_purchase_note && $purchase_note ) {
echo "\n" . do_shortcode( wp_kses_post( $purchase_note ) );
}
echo "\n\n";
endforeach;