These code snippets enable you to include the actual product prices for lowest and highest prices in your ship page sotting options.
Rather than display Sort by Price : Highest to Lowest or Lowest to Highest, you can display the actual lowest and highest prices so the drop down options include :
Sort by Price : 10 – 300 where 10 is the lowest price of any product and 300 is the highest.
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_sorting_options_v1' );
function custom_woocommerce_sorting_options_v1( $options ) {
// Get the minimum and maximum prices
$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'fields' => 'ids',
);
$products = new WP_Query( $args );
if ( ! empty( $products->posts ) ) {
$min_price = PHP_INT_MAX;
$max_price = PHP_INT_MIN;
foreach ( $products->posts as $product_id ) {
$product = wc_get_product( $product_id );
$price = $product->get_price();
if ( $price ) {
if ( $price < $min_price ) {
$min_price = $price;
}
if ( $price > $max_price ) {
$max_price = $price;
}
}
}
// Update sorting labels with price range
$options['price'] = sprintf( 'Sort by price: %d - %d', $min_price, $max_price );
// $options['price_desc'] = sprintf( 'Sort by price: %d - %d', $min_price, $max_price );
}
return $options;
}
And here’s the output on the frontend.
Was This Tutorial Helpful?