The email-order-items.php template already has the code to display the SKU here:
// SKU if ( $show_sku && is_object( $_product ) && $_product->get_sku() ) { echo ' (#' . $_product->get_sku() . ')'; }
However, $show_sku is false (disabled) by default. To enable it, we can use the woocommerce_email_order_items_table filter in functions.php:
function camis_customise_order_items_table( $table, $order ) { ob_start(); $template = $plain_text ? 'emails/plain/email-order-items.php' : 'emails/email-order-items.php'; wc_get_template( $template, array( 'order' => $order, 'items' => $order->get_items(), 'show_download_links' => $show_download_links, 'show_sku' => true, 'show_purchase_note' => $show_purchase_note, 'show_image' => $show_image, 'image_size' => $image_size ) ); return ob_get_clean(); } add_filter( 'woocommerce_email_order_items_table', 'camis_customise_order_items_table', 10, 2 );
You can tweak other items in the table here too, such as showing a product image or a purchase note.
'show_purchase_note' => true, 'show_image' => true, 'image_size' => array( 80, 80 )