/*
* Add sort by name to product archives
*/
function ordering_args( $sort_args ) {
$orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
switch( $orderby_value ) {
// Name your sortby key whatever you'd like; must correspond to the $sortby in the next function
case 'slug_asc':
$sort_args['orderby'] = 'name';
// Sort by ASC because we're using alphabetic sorting
$sort_args['order'] = 'asc';
break;
case 'slug_desc':
$sort_args['orderby'] = 'name';
// Sort by DESC because we're using reverse alphabetic sorting
$sort_args['order'] = 'desc';
break;
}
return $sort_args;
}
add_filter( 'woocommerce_get_catalog_ordering_args', 'ordering_args' );
// Add these new sorting arguments to the sortby options on the frontend
function add_new_orderby( $sortby ) {
// Adjust the text as desired
$sortby['slug_asc'] = __( 'Sort by name: A-Z', 'woocommerce' );
$sortby['slug_desc'] = __( 'Sort by name: Z-A', 'woocommerce' );
return $sortby;
}
add_filter( 'woocommerce_default_catalog_orderby_options', 'add_new_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'add_new_orderby' );