Looking to sort WooCommerce products in ascending order of price by default?
This can be done in two ways.
Method 1
Use the products
shortcode and specify the orderby
attribute’s value as price
.
[products orderby="price"]
Method 2
If your theme/plugin is already using the [products]
shortcode like the Products List component of Oxygen, woocommerce_shortcode_products_query
filter can be used to modify the query.
Add the following code snippet:
add_filter( 'woocommerce_shortcode_products_query', 'woocommerce_shortcode_products_orderby' );
function woocommerce_shortcode_products_orderby( $args ) {
$standard_array = array( 'menu_order', 'title', 'date', 'rand', 'id' );
if ( isset( $args['orderby'] ) && ! in_array( $args['orderby'], $standard_array ) ) {
$args['meta_key'] = '_price';
$args['orderby'] = 'meta_value_num';
}
return $args;
}
Note: The above applies to all instances of the [products]
shortcode.