For very rare cases, you may wish to allow customers to sort products by SKU. This use case would be useful in perhaps a B2B setting, events, or wholesaler.
/**
* Snippet Name: WooCommerce Sort Products By SKU
* Snippet Author: ecommercehints.com
*/
add_filter('woocommerce_catalog_orderby', 'ecommercehints_sku_sorting_option');
function ecommercehints_sku_sorting_option($options) {
$options['sku'] = 'Sort by SKU';
return $options;
}
add_filter('woocommerce_get_catalog_ordering_args', 'ecommercehints_sku_sorting_option_order');
function ecommercehints_sku_sorting_option_order($args) {
if( isset($_GET['orderby']) && 'sku' === $_GET['orderby']) {
$args['meta_key'] = '_sku';
$args['orderby'] = array( 'meta_value' => 'ASC' ); // Ascending Order (A-Z). Change 'ASC' to 'DESC' for Descending Order (Z-A)
}
return $args;
}
2 Responses
Any idea how I would add this to the default sort order dropdown in Customizer?
Take a look at the filter hook:
woocommerce_default_catalog_orderby