Imagine a situação, você tem uma lista de produtos aonde a promoção é válido somente por email, e não quer que ninguém do seu site os vejam. Saiba que é possível ocultar produtos de uma categoria específica da lista de produtos padrão. Atualmente eu uso esse em um cliente, ela quer que os produtos dos afiliados não se misturem com os itens da loja física, para isso eu uso uma ação no functions.php que oculta os produtos da loja baseado no slug da categoria.
No exemplo, irei usar o slug rafaella-piragini.
O código que você deve usar o o seguinte:
/** * Exclude products from a particular category on the 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( 'rafaella-piragini' ), // 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' );
E para excluir diversas categorias? É bem simples, basta inserir novos termos.
'terms' => array( 'esconder-1','esconder-2' , 'categoria-x','categoria-y' ), // Don't display products in the clothing category on the shop page.
Antes:
Depois:
Os produtos só são acessíveis através do link absoluto ou através de filtros de widgets.
Créditos do código: Não faço ideia, estou usando isso a bastante tempo em um cliente rsrs