Ask your WordPress questions! Pay money and get answers fast! Comodo Trusted Site Seal
Official PayPal Seal

Woocommerce products per page dropdown WordPress

  • REFUNDED

Hello, I'm using the following code taken from here-

http://designloud.com/how-to-add-products-per-page-dropdown-to-woocommerce/?showmodaldialog=1#comment-1554

to display a drop down selector so the user can select how many products to view per page. It all works except the pagination. Selecting next page returns a page not found 404 error. I think it something to do with the cookies. Can anyone help? Thanks

// Lets create the function to house our form
function woocommerce_catalog_page_ordering() {
?>


<form action="" method="POST" name="results">
<select name="woocommerce-sort-by-columns" id="woocommerce-sort-by-columns" class="sortby" onchange="this.form.submit()">
<?php

// This is where you can change the amounts per page that the user will use feel free to change the numbers and text as you want, in my case we had 4 products per row so I chose to have multiples of four for the user to select.

$shopCatalog_orderby = apply_filters('woocommerce_sortby_page', array(
'' => __('Results per page', 'woocommerce'),
'2' => __('2 per page', 'woocommerce'),
'36' => __('36 per page', 'woocommerce'),
'48' => __('48 per page', 'woocommerce'),
'64' => __('64 per page', 'woocommerce'),
));

foreach ( $shopCatalog_orderby as $sort_id => $sort_name )
echo '<option value="' . $sort_id . '" ' . selected( $_SESSION['sortby'], $sort_id, false ) . ' >' . $sort_name . '</option>';
?>
</select>

</form>
<?php

}

// now we set our cookie if we need to
function dl_sort_by_page($count) {
if (isset($_COOKIE['shop_pageResults'])) { // if normal page load with cookie
$count = $_COOKIE['shop_pageResults'];
}
if (isset($_POST['woocommerce-sort-by-columns'])) { //if form submitted
setcookie('shop_pageResults', $_POST['woocommerce-sort-by-columns'], time()+1209600, '/', 'beadsnwire.lukeseall.co.uk/', false); //this will fail if any part of page has been output- hope this works!
$count = $_POST['woocommerce-sort-by-columns'];
}
// else normal page load and no cookie
return $count;
}

add_filter('loop_shop_per_page','dl_sort_by_page');
add_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_page_ordering', 20 );

Answers (2)

2013-04-22

Yakir Sitbon answers:

1) Why you use with Cookies? WC work with static sessions..
2) Please show me the pagination link.

Yakir.

2013-04-22

MDan answers:

Hi Luke,

What version of woocommerce do you use? I see you've replaced the web address with your own so normally it should be working according to tutorial.