Exibir lista de categorias que contêm produtos com uma tag específica

Eu marquei alguns produtos com ‘tag1’, ‘tag2’ ou às vezes ambos.

Quero listar as categorias que contêm produtos com uma marca específica, então ‘Cat1’ só será listado se tiver um produto que seja marcado ‘tag1’.

Solutions Collecting From Web of "Exibir lista de categorias que contêm produtos com uma tag específica"

Provavelmente existem algumas maneiras de fazer isso. A chave reduzirá o número de loops que você precisa para torná-lo mais eficiente.

Eu acho que isso vai funcionar:

$query = new WP_Query( array( 'post_type' => 'product', 'posts_per_page' => '-1', // unlimited posts 'tax_query' => array( array( 'taxonomy' => 'product_tag', 'field' => 'slug', 'terms' => array( 'tag1' ), ), ), ) ); $categories = array(); while( $query->have_posts() ){ $query->the_post(); $post_categories = get_the_terms( $post, 'product_cat' ); foreach( $post_categories as $_cat ){ if( ! isset( $categories[$_cat->term_id] ) ){ $categories[$_cat->term_id] = $_cat; } } } wp_reset_postdata(); foreach ($categories as $category){ echo $category->name . '
'; }

Isto é completamente não testado e bastante rápido, mas acho que deveria fazer o que você deseja. Você precisará replace product_cat e product_tag pelos nomes de taxonomia corretos se não estiverem certos (eu não uso o WooCommerce regularmente).

Basicamente, usando uma tax_query , primeiro encontramos todas as postagens que possuem a etiqueta necessária. Em seguida, seguimos esses posts e construímos uma lista de categorias, passando por essas categorias para imprimi-las.

Isso resulta em uma lista de categorias que contêm produtos com essa tag específica.