If you’re running WooCommerce, the Orders screen is a great way to see – at a glance – what’s going on in your store. However, there’s one thing that it absolutely doesn’t show: the products that people have ordered.
The code below changes that – it gives you a special column in your Orders screen called “Products” and shows a quantity and product name for each product a person has ordered. Just paste this code into a site-plugin or into your functions.php file:
add_filter( 'manage_edit-shop_order_columns', 'show_product_order',15 );
function show_product_order($columns){
//add column
$columns['product-display'] = __( 'Products');
return $columns;
}
add_action( 'manage_shop_order_posts_custom_column' , 'snv_custom_shop_order_column', 10, 2 );
function snv_custom_shop_order_column( $column ) {
global $post, $woocommerce, $the_order;
switch ( $column ) {
case 'product-display' :
$terms = $the_order->get_items();
if ( is_array( $terms ) ) {
foreach($terms as $term)
{
echo $term['item_meta']['_qty'][0] .' x ' . $term['name'] .'
';
}
} else {
_e( 'Unable get the products', 'woocommerce' );
}
break;
}
}
Let’s break it down:
The filter (“show_product_order”) adds a column to the WooCommerce Orders Admin screen. The column will show up at the end of the other column lists.
The action (“snv_custom_shop_order_column”) adds a function to the “manage_shop_order_posts_custom_column” (whew!) hook in WooCommerce. It then checks each order listed in the column and looks for a column field called “product-display” – which we defined in the filter above. It then echoes the quantity and the name for each product listed.
Feel free to modify this as you wish – you can also find a Gist of this on GitHub if you’d rather see it / bookmark it there!



