Hiding taxonomies with no children WP_Query & tax_query
I have this code which has taken over 7 hours to put together through research but the last hours or so I have hit a brick wall!
I require the taxonomy title to be hidden if there are no posts associated with it.
Here is the page: http://cb.dannycheeseman.me/wine-menu/usa/california/
Here is my code:
/**********************************************/
// CUSTOM WINE MENU SHORTCODE
/**********************************************/
add_shortcode( 'wine_list_per_cat', 'wine_list_per_cat' );
function wine_list_per_cat($atts){
global $woocommerce_loop;
extract(shortcode_atts(array(
'cat' = '', // list of categories in the format 0,1,2,3,4
'tax' = 'product_cat', // taxonomy use
'per_cat' = '3', // max featured items to display per category
'columns' = '3', // columns size
), $atts));
?
ul id="wine-menu"
?php
$wine_type_terms = get_terms( 'wine-type' );
foreach ( $wine_type_terms as $wine_type_term ) {
$args = array(
'post_type' = 'product',
'showposts' = -1,
'tax_query' = array(
'relation' = 'IN',
array(
'taxonomy' = 'wine-type',
'field' = 'slug',
'terms' = array( $wine_type_term-slug ),
),
array(
'taxonomy' = 'product_cat',
'field' = 'slug',
'terms' = $cat
)
));
$wine_type_query = new WP_Query($args);?
li
h2?php echo $wine_type_term-name; ?/h2
ul
?php while ( $wine_type_query-have_posts() ) : $wine_type_query-the_post();global $product ?
li class="wine-item"
h3?php the_title(); ?/h3
span class="wine-bottle-size"Size: ?php echo get_post_meta( get_the_ID(),'wine_bottle_size', true );?/spanbr/
span class="wine-percentage"Percentage: ?php echo get_post_meta( get_the_ID(), 'wine_percentage', true );?/spanbr/
span class="wine-year"Year: ?php echo get_post_meta( get_the_ID(), 'wine_year', true );?/spanbr/
span class="wine-price"Price: ?php echo $product-get_price_html(); ?/spanbr/
div class="wine-content"?php echo get_post_meta( get_the_ID(), 'wine_menu_content', true );?/div
?php woocommerce_template_loop_add_to_cart( $wine_type_query-post, $product ); ?
/li
?php endwhile;?
?php wp_reset_postdata(); ?
/ul
/li
?php } ?
?php wp_reset_query(); ?
/ul!--/.products--
?php }
UPDATE! OK!!! Woooohooo! Found out what it was.. I should have been calling if have posts before the call for $tax->name; Here is my final, and working code! :)
/**********************************************/
// CUSTOM WINE MENU SHORTCODE
/**********************************************/
add_shortcode( 'wine_list_per_cat', 'wine_list_per_cat' );
function wine_list_per_cat($atts){
global $woocommerce_loop;
extract(shortcode_atts(array(
'cat' = '', // list of categories in the format 0,1,2,3,4
'tax' = 'product_cat', // taxonomy use
'per_cat' = '3', // max featured items to display per category
'columns' = '3', // columns size
), $atts));
?
ul id="wine-menu"
?php
$taxonomy = get_terms( 'wine-type', array('hide_empty' = true, 'pad_counts' = true));
foreach ( $taxonomy as $tax ) {
$args = array(
'post_type' = 'product',
'orderby' = 'title',
'showposts' = -1,
'tax_query' = array(
'relation' = 'AND',
array(
'taxonomy' = 'product_cat',
'field' = 'slug',
'terms' = $cat,
'operator' = 'IN'
),
array(
'taxonomy' = 'wine-type',
'field' = 'slug',
'terms' = array( $tax-slug ),
'operator' = 'IN'
),
));
$wine_type_query = null;
$wine_type_query = new WP_Query($args);
if( $wine_type_query-have_posts() ) : ?
li id="wine-type"
h2?php echo $tax-name; ?/h2
ul
?php while ( $wine_type_query-have_posts() ) : $wine_type_query-the_post();global $product ?
li class="wine-item"
h3?php the_title(); ?/h3
span class="wine-bottle-size"Size: ?php echo get_post_meta( get_the_ID(),'wine_bottle_size', true );?/spanbr/
span class="wine-percentage"Percentage: ?php echo get_post_meta( get_the_ID(), 'wine_percentage', true );?/spanbr/
span class="wine-year"Year: ?php echo get_post_meta( get_the_ID(), 'wine_year', true );?/spanbr/
span class="wine-price"Price: ?php echo $product-get_price_html(); ?/spanbr/
div class="wine-content"?php echo get_post_meta( get_the_ID(), 'wine_menu_content', true );?/div
?php woocommerce_template_loop_add_to_cart( $wine_type_query-post, $product ); ?
/li
?php endwhile;?
/ul
/li
?php endif; wp_reset_query(); ?
?php } ?
/ul!--/.products--
?php }
Topic woocommerce-offtopic tax-query wp-query custom-taxonomy customization Wordpress
Category Web