Я пытаюсь настроить страницы архива моего магазина продуктов WooCommerce, чтобы сначала отображались все товары, отмеченные как избранные, а затем все остальные товары в выбранной категории.
Я уже попробовал следующееЦикл, который я поместил в свой файл archive-product.php, однако у меня есть 2 проблемы:
Если я нахожусь на странице архива /product-category/toys/
, он показывает товары всех категорий. Предполагается, что будут отображаться товары только из определенной категории (например, игрушки).
На каждой странице с разбивкой по страницам сначала отображаются избранные товары, а затем отображаются обычные товары. В действительности только первая страница должна отображать рекомендуемые продукты, и после отображения всех рекомендуемых продуктов на них должны отображаться обычные продукты. Кажется, что на каждой странице отображаются два отдельных цикла, а не один цикл.
ТАКЖЕ, это предпочтительный способ сделать это, или я должен использовать pre_get_posts
?
<?php woocommerce_product_loop_start(); ?>
<?php
//CUSTOM LOOP
// Display featured Products first.
$query = new WP_Query( array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1 ,
'tax_query' => array( array(
'taxonomy' => 'product_visibility',
'field' => 'term_id',
'terms' => 'featured',
'operator' => 'IN',
) )
) );
$featured_product_names = array();
$featured_product_id = array();
if ( $query->have_posts() ): while ( $query->have_posts() ): $query->the_post();
$product = wc_get_product( $query->post->ID );
wc_get_template_part( 'content', 'product' );
endwhile; wp_reset_query();endif;
// fetch other product which is not featured
$my_query = new WP_Query(array(
'post__not_in' => $featured_product_id,
'post_type' => 'product'
));
if ( $my_query->have_posts() ): while ( $my_query->have_posts() ): $my_query->the_post();
$product = wc_get_product( $query->post->ID );
wc_get_template_part( 'content', 'product' );
endwhile; wp_reset_query();endif;
?>
<?php woocommerce_product_loop_end(); ?>
Я думаю, что я на правильном пути, но не могу точно определить проблему.
Вся помощь приветствуется !!