Получить связанные продукты на основе подкатегории из конкретной категории - PullRequest
0 голосов
/ 22 июня 2019

Привет. Я хочу отобразить связанный продукт на странице отдельного продукта, в данный момент он показывает продукты тех категорий, которые выбраны в текущем продукте. Я просто хочу, чтобы связанный продукт имел отношение на основе "подкатегории", выбранной из определенной категории с идентификатором категории 142.

категория с идентификатором 142 имеет имя «Artist», тогда как художники имеют подкатегорию «mike» и «joe». Все, что я хочу, это когда у художника есть артист Майк, связанный продукт покажет все произведения артистов из Майка.

вот мой код

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;
}
// Dont bother if none are set
if ( sizeof( $cats_array ) == 1 ) return array();
$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,
'post__not_in' => array( $product->get_id() ),
'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( 'Related Products', 'woocommerce' ); ?></h2>

<?php woocommerce_product_loop_start(); ?>

    <?php while ( $products->have_posts() ) : $products->the_post(); ?>

        <?php wc_get_template_part('content', 'product-related'); ?>

    <?php endwhile; // end of the loop. ?>

<?php woocommerce_product_loop_end(); ?>
</div>
<?php endif;
wp_reset_postdata();

Помогите, пожалуйста, я новичок. спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...