Skip to content

Instantly share code, notes, and snippets.

@mikejolley
Created January 16, 2012 18:54
Show Gist options
  • Star 36 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save mikejolley/1622323 to your computer and use it in GitHub Desktop.
Save mikejolley/1622323 to your computer and use it in GitHub Desktop.
WooCommerce - Change default catalog sort order
/**
* This code should be added to functions.php of your theme
**/
add_filter('woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby');
function custom_default_catalog_orderby() {
return 'date'; // Can also use title and price
}
@Janilso
Copy link

Janilso commented Jul 25, 2019

Obrigado!

@hoaiphatcr
Copy link

Thank you so much. I try to re-order by modified date and got stuck. Now I see your code. It's save my day.

add_filter('woocommerce_get_catalog_ordering_args', 'am_woocommerce_catalog_orderby');
function am_woocommerce_catalog_orderby( $args ) {
$args['meta_key'] = '';
$args['orderby'] = 'modified';
$args['order'] = 'desc';
return $args;
}

@thientanhai
Copy link

Thanks you i have success in my site

@davITnemec
Copy link

Hi everyone, I'm deal with default sorting with meta key. Using ReHub theme + Woocomerce. I need to have sorted all product regarding their rehub_review_overall_score - it's meta key in ReHub theme.

//Adding custom sort
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_product_sorting' );
function custom_product_sorting( $args ) {
// Sort score DESC
if ( isset( $_GET['orderby'] ) && 'score-desc' === $_GET['orderby'] ) {
$args['meta_key'] = 'rehub_review_overall_score';
$args['orderby'] = 'meta_value_num';
$args['order'] = 'desc';
}
return $args;
}

//have custom sort as default
add_filter('woocommerce_default_catalog_orderby', 'default_catalog_orderby');
function default_catalog_orderby( $sort_by ) {
return 'score-desc';
}

The code is working properly only when I use it in URL, like ?orderby=score-desc but for default it's not sorting the products regarding their score.

Do you know where is the problem and how to solve it?

Thak you very much

@Hamidaraghi
Copy link

If you want the catalog ordering to still work properly you should wrap your code in something like:

function woocommerce_catalog_orderby( $args ) {
if(!$_GET['orderby']) {
$args['orderby'] = 'menu_order';
$args['order'] = 'asc';
}
return $args;
}

I was having a problem with a client wanting a specific order while also wanting the sorting to still function. This worked.

Thank you sir! 👍

@AngeloLazzari
Copy link

@hoaiphatcr YOU saved my day!!!! thanks!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment