Как отображать товары WooCommerce только в тех категориях, которые выбраны галочкой в админке


Октябрь 24, 2018

Как отображать товары WooCommerce только в тех категориях, которые выбраны галочкой в админке

По умолчанию вукомерс выводит товар и в родительской, и в дочерней, и в конечной (основной) категории, допустим если есть иерархия категорий: магазин>категория1>категория2>категория3>товар , то товар будет показываться сразу во всех категориях.

Но бывают случаи, когда необходимо показать товар только в определенных уровнях иерархии. Зачем? Вот например продаете вы мебель для кухни, внутри мебели для кухни есть подкатегории, кухонные гарнитуры, мойки, фурнитура, и, чтобы при входе в категорию мебель для кухни не попадала куча товара - фурнитуры, который по сути является аксессуаром и должен быть виден только внутри собственной категории, и нигде больше, есть готовый код.

Данный код нужно вставлять в файл functions.php, который находится внутри вашей папки вашей темы.

function exclude_products_from_child_cats( $wp_query ) {
	if ( ! is_admin() && $wp_query->is_main_query()) {
		if (isset( $wp_query->query_vars['product_cat'] )) {
			$tax_query = array(
				array(
					'taxonomy' => 'product_cat',
					'field' => 'slug',
					'terms' => $wp_query->query_vars['product_cat'],
					'include_children' => false
				)
			);
			$wp_query->set( 'tax_query', $tax_query );
		}
	}
}

add_filter( 'pre_get_posts', 'exclude_products_from_child_cats' );

Теперь идем в товар, выставляем галочками нужные категории, где он должен быть виден, проверяем что все работает и радуемся.


Также рекомендую к ознакомлению


avatar
  Подписаться  
Уведомление о
Последние комментарии