Skip to content

Instantly share code, notes, and snippets.

  • Star 9 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
This snippet will exclude all products from any categories which you choose from displaying on the WooCommerce Shop page.
function custom_pre_get_posts_query( $q ) {
$tax_query = (array) $q->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'clothing' ), // Don't display products in the clothing category on the shop page.
'operator' => 'NOT IN'
$q->set( 'tax_query', $tax_query );
add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );
Copy link

hello @stuartduff
can this function be used on a sngle php function script for multiple queries, example theme-functions.php or would you use on singular function script. example i have ancient-near-eastern to exclude buckles as it belongs to a different category like viking category. so can it be used mutliple times on same functions script or would you use category1-function.pho,category-2.php

Copy link

wmind commented Jul 25, 2020

Hello there,
the code does work pretty well but it seems that this affects some of my other pages as well.
My site is a marketplace one and each seller has his own store page. These changes of hiding the categories takes effect on those pages as well.
How can I make it to be displayed only on a specific page?
I am new to php so I need some help please!

Copy link

I like to use the code for an adult section that must be hidden from the home page.
But it must be possible to do an order? is that possible?

category "Adult" must be hidden from the main page. But when you search or click on an other page then it must be visible

Is that an option to fix?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment