Готовий код для заміни стандартного related.php в шаблоні теми /wp-content/themes/***/woocommerce/related.php
<?php if ( ! defined( 'ABSPATH' ) ) { exit; } global $product, $woocommerce_loop; if ( empty( $product ) || ! $product->exists() ) { return; } if ( ! $related = $product->get_related( $posts_per_page ) ) { return; } $cats_array = array(0); // get categories $terms = wp_get_post_terms( $product->id, 'product_cat' ); // select only the category which doesn't have any children foreach ( $terms as $term ) { $children = get_term_children( $term->term_id, 'product_cat' ); if ( !sizeof( $children ) ) $cats_array[] = $term->term_id; } $args = apply_filters( 'woocommerce_related_products_args', array( 'post_type' => 'product', 'ignore_sticky_posts' => 1, 'no_found_rows' => 1, 'posts_per_page' => $posts_per_page, 'orderby' => $orderby, 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'field' => 'id', 'terms' => $cats_array ), ) )); $products = new WP_Query( $args ); $woocommerce_loop['name'] = 'related'; $woocommerce_loop['columns'] = apply_filters( 'woocommerce_related_products_columns', $columns ); if ( $products->have_posts() ) : ?> <div class="related products"> <h2><?php _e( 'Схожі товари', 'woocommerce' ); ?></h2> <?php woocommerce_product_loop_start(); ?> <?php while ( $products->have_posts() ) : $products->the_post(); ?> <?php wc_get_template_part( 'content', 'product' ); ?> <?php endwhile; // end of the loop. ?> <?php woocommerce_product_loop_end(); ?> </div> <?php endif; wp_reset_postdata();в