1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
<?php /** * Order details table shown in emails. * * This template can be overridden by copying it to yourtheme/woocommerce/emails/email-order-details.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 * @version 9.7.0 */
use Automattic\WooCommerce\Utilities\FeaturesUtil;
defined( 'ABSPATH' ) || exit;
$text_align = is_rtl() ? 'right' : 'left';
$email_improvements_enabled = FeaturesUtil::feature_is_enabled( 'email_improvements' ); $heading_class = $email_improvements_enabled ? 'email-order-detail-heading' : ''; $order_table_class = $email_improvements_enabled ? 'email-order-details' : ''; $order_total_text_align = $email_improvements_enabled ? 'right' : 'left';
if ( $email_improvements_enabled ) { add_filter( 'woocommerce_order_shipping_to_display_shipped_via', '__return_false' ); }
/** * Action hook to add custom content before order details in email. * * @param WC_Order $order Order object. * @param bool $sent_to_admin Whether it's sent to admin or customer. * @param bool $plain_text Whether it's a plain text email. * @param WC_Email $email Email object. * @since 2.5.0 */ do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plain_text, $email ); ?>
<h2 class="<?php echo esc_attr( $heading_class ); ?>"> <?php if ( $email_improvements_enabled ) { echo wp_kses_post( __( 'Order summary', 'woocommerce' ) ); } if ( $sent_to_admin ) { $before = '<a class="link" href="' . esc_url( $order->get_edit_order_url() ) . '">'; $after = '</a>'; } else { $before = ''; $after = ''; } if ( $email_improvements_enabled ) { echo '<span>'; } /* translators: %s: Order ID. */ $order_number_string = $email_improvements_enabled ? __( 'Order #%s', 'woocommerce' ) : __( '[Order #%s]', 'woocommerce' ); echo wp_kses_post( $before . sprintf( $order_number_string . $after . ' (<time datetime="%s">%s</time>)', $order->get_order_number(), $order->get_date_created()->format( 'c' ), wc_format_datetime( $order->get_date_created() ) ) ); if ( $email_improvements_enabled ) { echo '</span>'; } ?> </h2>
<div style="margin-bottom: <?php echo $email_improvements_enabled ? '24px' : '40px'; ?>;"> <table class="td font-family <?php echo esc_attr( $order_table_class ); ?>" cellspacing="0" cellpadding="6" style="width: 100%;" border="1"> <?php if ( ! $email_improvements_enabled ) { ?> <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' ); ?></th> <th class="td" scope="col" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php esc_html_e( 'Price', 'woocommerce' ); ?></th> </tr> </thead> <?php } ?> <tbody> <?php $image_size = $email_improvements_enabled ? 48 : 32; echo wc_get_email_order_items( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped $order, array( 'show_sku' => $sent_to_admin, 'show_image' => $email_improvements_enabled, 'image_size' => array( $image_size, $image_size ), 'plain_text' => $plain_text, 'sent_to_admin' => $sent_to_admin, ) ); ?> </tbody> <tfoot> <?php $item_totals = $order->get_order_item_totals(); $item_totals_count = count( $item_totals );
if ( $item_totals ) { $i = 0; foreach ( $item_totals as $total ) { $i++; $last_class = ( $i === $item_totals_count ) ? ' order-totals-last' : ''; ?> <tr class="order-totals order-totals-<?php echo esc_attr( $total['type'] ?? 'unknown' ); ?><?php echo esc_attr( $last_class ); ?>"> <th class="td text-align-left" scope="row" colspan="2" style="<?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"> <?php echo wp_kses_post( $total['label'] ) . ' '; if ( $email_improvements_enabled ) { echo isset( $total['meta'] ) ? wp_kses_post( $total['meta'] ) : ''; } ?> </th> <td class="td text-align-<?php echo esc_attr( $order_total_text_align ); ?>" style="<?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo wp_kses_post( $total['value'] ); ?></td> </tr> <?php } } if ( $order->get_customer_note() && ! $email_improvements_enabled ) { ?> <tr> <th class="td text-align-left" scope="row" colspan="2"><?php esc_html_e( 'Note:', 'woocommerce' ); ?></th> <td class="td text-align-left"><?php echo wp_kses( nl2br( wptexturize( $order->get_customer_note() ) ), array() ); ?></td> </tr> <?php } if ( $order->get_customer_note() && $email_improvements_enabled ) { ?> <tr class="order-customer-note"> <td class="td text-align-left" colspan="3"> <b><?php esc_html_e( 'Customer note', 'woocommerce' ); ?></b><br> <?php echo wp_kses( nl2br( wptexturize( $order->get_customer_note() ) ), array( 'br' => array() ) ); ?> </td> </tr> <?php } ?> </tfoot> </table> </div>
<?php if ( $email_improvements_enabled ) { remove_filter( 'woocommerce_order_shipping_to_display_shipped_via', '__return_false' ); }
/** * Action hook to add custom content after order details in email. * * @param WC_Order $order Order object. * @param bool $sent_to_admin Whether it's sent to admin or customer. * @param bool $plain_text Whether it's a plain text email. * @param WC_Email $email Email object. * @since 2.5.0 */ do_action( 'woocommerce_email_after_order_table', $order, $sent_to_admin, $plain_text, $email ); ?>
|