Tenho lutado para descobrir como fazer isso. Gostaria de ocultar produtos de uma (ou várias) categorias na página da LOJA PRINCIPAL, mas não ocultá-los em suas páginas de categorias individuais. Encontrei soluções para ocultar as categorias, mas isso sempre as torna invisíveis em suas páginas de categorias, também... o que eu não quero.
O motivo é que essa categoria em particular terá milhares de produtos que não quero sobrecarregar e esconder os outros itens mais variados.
A função que você quer usar é is_shop(). Esta função verifica se você está na página principal da loja. E não será acionada em outros arquivos de produtos.
Se você usar isso em combinação com o filtro 'pre_get_posts', você pode excluir categorias de produtos modificando a consulta.
Um exemplo onde excluo produtos com a categoria "legal" da página principal da loja: