Display all categories but only if they have posts in them that have a specific tag assigned

I have a WooCommerce site and am working on the product tag pages. I want to display every product that is assigned to that tag, and break them up into their individual categories (this bit is working).

The only issue I am having is it is displaying every single category, even if 0 products in the current tag have that assigned.

?php $tag_id = get_queried_object(); ?

  div id=product-list class=product-list

    ?php // Get all products inside the current tag ?
    ?php $collectionProducts = array(
      'post_type' = 'product',
      'order' = 'ASC',
      'hide_empty' = true,
      'parent' = 0,
      'taxonomy' = 'product_tag',
      'field' = 'slug',
      'terms' = $tag_id-slug
    );

    // Get list of categories, but only display them if they have products with the current tag assigned 
    //(THIS BIT ISN'T WORKING)

    $child_terms = get_categories( array(
      'parent' = 0,
      'hide_empty' = true,
      'taxonomy' = 'product_cat',
      'tax_query' = array (
        'taxonomy' = 'product_tag',
        'field' = 'slug',
        'terms' = $tag_id-slug,
        'operator' = 'IN'
      )
    ));
    ?

      ?php // List products, broken down by category ?
      ?php foreach($child_terms as $child_term) { 
        $shortcode = do_shortcode('[products tag=' . $tag_id-slug .' category=' . $child_term-slug . ' per_page=-1 columns=3 orderby=date]');
      ?

        div class=product-list-single-category id=?php echo $child_term-slug; ?
          div class=title
            h3?php echo $child_term-name; ?/h3
          /div
          ?php echo $shortcode; ?
        /div
      ?php } ?

    /div

Topic loop tags categories Wordpress

Category Web

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.