Title: WooCommerce Product Sorting
Last modified: August 21, 2016

---

# WooCommerce Product Sorting

 *  Resolved [user1752759B](https://wordpress.org/support/users/user1752759b/)
 * (@user1752759b)
 * [13 years ago](https://wordpress.org/support/topic/woocommerce-product-sorting/)
 * I would like to create more sorting options on my WooCommerce Shop page that 
   allows the customer to view products by:
 * [http://i.stack.imgur.com/SM4KH.jpg](http://i.stack.imgur.com/SM4KH.jpg)
 * As opposed to the default sorting:
 * [http://i.stack.imgur.com/3J6Iz.jpg](http://i.stack.imgur.com/3J6Iz.jpg)
 * In my `functions.php` file:
 *     ```
       // Modify the product sorting.
           function custom_woocommerce_get_catalog_ordering_args( $args ) {
           	if (isset($_SESSION['orderby'])) {
           		switch ($_SESSION['orderby']) :
           		case 'price_asc' :
           		$args['orderby'] = 'meta_value_num';
           		$args['order'] = 'asc';
           		$args['meta_key'] = '';
           		break;
   
           		case 'price_desc' :
           		$args['orderby'] = 'meta_value_num';
           		$args['order'] = 'desc';
           		$args['meta_key'] = '_price';
           		break;
   
           		case 'popularity_asc' :
           		$args['orderby'] = 'rating';
           		$args['order'] = 'asc';
           		$args['meta_key'] = '';
           		break;
   
           		case 'popularity_desc' :
           		$args['orderby'] = 'rating';
           		$args['order'] = 'desc';
           		$args['meta_key'] = '';
           		break;
   
           		case 'sales_asc' :
           		$args['orderby'] = 'sales';
           		$args['order'] = 'asc';
           		$args['meta_key'] = '';
           		break;
   
           		case 'sales_desc' :
           		$args['orderby'] = 'sales';
           		$args['order'] = 'desc';
           		$args['meta_key'] = '';
           		break;
   
           		case 'date_asc' :
           		$args['orderby'] = 'date';
           		$args['order'] = 'asc';
           		$args['meta_key'] = '';
           		break;
   
           		case 'date_desc' :
           		$args['orderby'] = 'date';
           		$args['order'] = 'desc';
           		$args['meta_key'] = '';
           		break;
   
           		case 'title_asc' :
           		$args['orderby'] = 'title';
           		$args['order'] = 'asc';
           		$args['meta_key'] = '';
           		break;
   
           		case 'title_desc' :
           		$args['orderby'] = 'title';
           		$args['order'] = 'desc';
           		$args['meta_key'] = '';
           		break;			
   
           		endswitch;
           	}
   
           	return $args;
           }
   
           add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args');
   
           function custom_woocommerce_catalog_orderby( $sortby ) {
           	$sortby['price_asc'] = 'Price (Lowest to Highest)';
           	$sortby['price_desc'] = 'Price (Highest to Lowest)';
           	$sortby['popularity_asc'] = 'Popularity (Ranked Highest)';
           	$sortby['popularity_desc'] = 'Popularity (Ranked Lowest)';
           	$sortby['sales_asc'] = 'Sales (Highest to Lowest)';
           	$sortby['sales_desc'] = 'Sales (Lowest to Highest)';
           	$sortby['date_desc'] = 'Date (Newest to Oldest)';
           	$sortby['date_asc'] = 'Date (Oldest to Newest)';
           	$sortby['title_asc'] = 'Alphabetically (A-Z)';
           	$sortby['title_desc'] = 'Reverse-Alphabetically (Z-A)';
   
           	return $sortby;
           }	
   
           add_filter('woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby');
       ```
   
 * As the WooCommerce support page ([http://docs.woothemes.com/document/custom-sorting-options-ascdesc/](http://docs.woothemes.com/document/custom-sorting-options-ascdesc/))
   for this only has three examples on how to do this, I was wondering how would
   I be able to achieve the other settings for the desired effect, as some of the
   options I’ve placed in my `functions.php` file aren’t currently working and my
   sorting filter now looks like:
 * [http://i.stack.imgur.com/Mp0lM.jpg](http://i.stack.imgur.com/Mp0lM.jpg)
 * From one of the responses I received, I was told
 * > modify the $sortby variable in your custom_woocommerce_catalog_orderby() function
   > to make it look the way you want
 *  and would kindly like some further clarification on this.
 * Thank you.

Viewing 1 replies (of 1 total)

 *  [mdwornicki](https://wordpress.org/support/users/mdwornicki/)
 * (@mdwornicki)
 * [12 years, 2 months ago](https://wordpress.org/support/topic/woocommerce-product-sorting/#post-3714638)
 * [@user1752759b](https://wordpress.org/support/users/user1752759b/)
 * Your code can works fine if you change from:
 *     ```
       if (isset($_SESSION['orderby'])) {
          switch ($_SESSION['orderby']) :
       ```
   
 * to:
 *     ```
       $orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
          switch ($orderby_value) :
       ```
   

Viewing 1 replies (of 1 total)

The topic ‘WooCommerce Product Sorting’ is closed to new replies.

 * ![](https://ps.w.org/woocommerce/assets/icon.svg?rev=3234504)
 * [WooCommerce](https://wordpress.org/plugins/woocommerce/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/woocommerce/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/woocommerce/)
 * [Active Topics](https://wordpress.org/support/plugin/woocommerce/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/woocommerce/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/woocommerce/reviews/)

 * 1 reply
 * 2 participants
 * Last reply from: [mdwornicki](https://wordpress.org/support/users/mdwornicki/)
 * Last activity: [12 years, 2 months ago](https://wordpress.org/support/topic/woocommerce-product-sorting/#post-3714638)
 * Status: resolved