Пользовательский цикл Woocommerce для отображения всех продуктов

В настоящее время я работаю над сайтом электронной коммерции, и я столкнулся с проблемой. Мой клиент хочет, чтобы страница e-boutique отображалась во всех категориях продуктов, а затем три продвинутых продукта и кнопка «показать все».

Эта кнопка «Показать все» должна показывать весь продукт, который хранится в магазине, с сортировкой по умолчанию и поисковой страницей woocommerce по умолчанию.

Прежде всего, я не знаю, что я делаю это правильно. До сих пор я показываю страницы с категориями продуктов, и когда на этой странице я нажимаю кнопку «показать все», я перезагружаю страницу аргументом GET /?all=1 и отображаю продукт.

 <a class="product-category-view-all" href="?all=1"><?php _e('View all'); ?></a> 

Я скопировал эту идею с этого поста , и вот мой код:

 <div id="content" class="hfeed"> <h1><?php _e('The E-boutique'); ?></h1> <?php if (isset($_GET['all'])) { $args = array( 'post_type' => 'product', 'orderby' => $orderby, ); $wp_query = new WP_Query($args); ?> <?php do_action('woocommerce_before_shop_loop'); // woocommerce sorting ?> <div class="clear"></div> <ul class="products-list"> <?php woocommerce_product_subcategories(); ?> <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <?php woocommerce_get_template_part('content', 'product'); ?> <?php endwhile; // end of the loop. wp_reset_query(); ?> </ul> <div class="clear"></div> <?php do_action('woocommerce_after_shop_loop'); // woocommerce pagination ?> <?php } else { // Code to display the product categories with thumbnails. } ?> 

Продукты хорошо отображаются, и выбор для сортировки виден. Когда я хочу изменить сортировку, страница перезагружается, но порядок не изменяется, а пейджинг настроен на 3 продукта на страницу, но он не соблюдается. (кнопки поискового вызова не отображаются).

Я хотел бы добавить, что это мой первый веб-сайт с использованием WordPress и WooCommerce.

Я не полностью решил свою проблему. Мой клиент передумал и больше не хотел сортировки.

Но в отношении пейджинга мне удалось заставить его работать, добавив новый аргумент в мой запрос, вот код, который заставил его работать для меня:

 <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'post_type' => 'product', 'paged' => $paged, ); $wp_query = new WP_Query($args); if (isset($_GET['all'])) { ?> <?php do_action('woocommerce_archive_description'); ?> <?php if (have_posts()) : ?> <?php // I don't want the sorting anymore //do_action('woocommerce_before_shop_loop'); ?> <ul class = "products-list"> <?php while (have_posts()) : the_post(); ?> <?php woocommerce_get_template_part('content', 'product'); ?> <?php endwhile; // end of the loop. ?> </ul> <?php /* woocommerce pagination */ do_action('woocommerce_after_shop_loop'); ?> <?php elseif (!woocommerce_product_subcategories(array('before' => woocommerce_product_loop_start(false), 'after' => woocommerce_product_loop_end(false)))) : ?> <?php woocommerce_get_template('loop/no-products-found.php'); ?> <?php endif; ?> <?php } else { // Code to display the product categories with thumbnails. } ?> 

Переменная $paged помогает мне получить текущую страницу, переданную в URL через GET.

Еще раз, я не знаю, если это лучший способ сделать это. Но он сделал эту работу для меня.

Надеюсь, это может помочь кому-то.

В вашем массиве $ args вы можете добавить 'posts_per_page' => -1 чтобы показать все продукты. Результат будет выглядеть так:

 $args = array( 'post_type' => 'product', 'paged' => $paged, 'posts_per_page' => -1 );