I’m currently working on an ecommerce website and I met an problem.
My client want a page e-boutique with all the product categories displayed, followed by three promoted products and a button “show all”.
This “Show all” button is supposed to show all the product that the store contains with the default woocommerce sorting and paging.
First of all, I dunno I’m doing it the right way. What I have so far is the page showing the product categories and when on this page I click the “show all” button, I reload the page with a GET
argument /?all=1
and have the product displayed.
<a class="product-category-view-all" href="?all=1"><?php _e('View all'); ?></a>
I copied the idea from this post, and here is my code:
<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.
}
?>
The products are well displayed and the select for the sorting is visible.
When I want to change the sorting, the page is reloaded but the order isn’t changed and the paging is set to 3 products per page but it is not respected. (the paging buttons aren’t displayed).
I would like to add that it’s my first website using WordPress and WooCommerce.
I didn’t entirely resolved my problem. My client changed his mind and didn’t want the sorting anymore.
But concerning the paging, I managed to have it working by adding a new arg in my query, here is the code that made it worked for me :
The
$paged
variable helps me to get the current page passed in the URL via GET.Once again, I dunno if it is the best way to do it. But it did the job for me.
I hope it can help someone.
In your $args array, you should be able to add
'posts_per_page' => -1
to show all products. The result would look like this: