Только что сам столкнулся с такой проблемой. Решил вот так
$args = array('product_cat' => '%categiry_name%', 'post_type' => 'product');
$loop = new WP_Query( $args );
Затем через var_dump($loop) находим необходимые данные и читаем их(в моём случае $loop->posts).
На мой взгляд самый гибкий вариант, так как мне необходимо было вывести продукты с нескольких категорий на одной странице разделённые и логически, и визуально.