В статье рассказано и показано отделение товаров от категорий.

В начале создания магазина и наполнения его товарами всё выглядит примерно так:

Где есть категория "Тактическая медицина", "Фальшфейер" - товар, который в ней находится.

"Жгуты и турникеты" - это подкатегория, в которой находится товар RATS.

То есть:

Тактическая медицина - фальшфейер

|-> Жгуты и турникеты - RATS


В настройках темы (используется "Online Shop"), выставлены опции:


Для того чтобы было вот так:

Здесь подкатегория отделена о товаров. Но товары разных подкатегорий идут вместе. Чтобы сделать так, надо зайти в "Редактор тем", выбрать файл "functions.php", пролистать его вниз до конца и добавить код:


/**
* Отделение товаров от категории
*/
remove_filter( 'woocommerce_product_loop_start', 'woocommerce_maybe_show_product_subcategories' );
add_action( 'woocommerce_before_shop_loop', function () {
if ( $html = woocommerce_maybe_show_product_subcategories() ) {
wc_get_template( 'loop/loop-start.php' );
echo $html;
wc_get_template( 'loop/loop-end.php' );
}
}, 40 );



Для того чтобы каждый товар был в своей подкатегории, ниже уже добавленного нами кода, надо добавить ещё код:

/**
* Не показывать товары всех подкатегорий
*/
function exclude_product_cat_children($wp_query) {
if ( isset ( $wp_query->query_vars['product_cat'] ) && $wp_query->is_main_query()) {
$wp_query->set('tax_query', array(
array (
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $wp_query->query_vars['product_cat'],
'include_children' => false
)
)
);
}
}
add_filter('pre_get_posts', 'exclude_product_cat_children');


Выглядит это вот так:


Теперь каталог товаров выглядит как положено: