Display the Remaining Stock Quantity for each order item only in WooCommerce new order email notification
There is an alternative code solution that you should use:
// Setting the email ID as a global variable add_action('woocommerce_email_before_order_table', 'set_the_email_id_as_a_global_variable', 1, 4); function set_the_email_id_as_a_global_variable($order, $sent_to_admin, $plain_text, $email){ $GLOBALS['email_id_str'] = $email->id; } // Display product remaining stock quantity on order items add_action( 'woocommerce_order_item_meta_start', 'display_remaining_stock_quantity', 10, 3 ); function display_remaining_stock_quantity( $item_id, $item, $order ) { // Only for order item "line item" type if ( !$item->is_type('line_item') ) { return; } $globalsVar = $GLOBALS; // Pass $GLOBALS variable as reference // Try to get the email ID from globals reference if( isset($globalsVar['email_id_str']) && $globalsVar['email_id_str'] === 'new_order' ) { $product = $item->get_product(); if ( $stock_qty = $product->get_stock_quantity() ) { printf('<div>%s: %d</div>', __('Remaining stock', 'woocommerce'), $stock_qty); } } }
Code goes in function.php file of your child theme (or in a plugin). Tested and works. It may work on your side, avoiding the issue you describe.