Automattic\WooCommerce\Internal\ProductFilters
QueryClauses::add_price_clauses
Add query clauses for price filter.
Method of the class: QueryClauses{}
No Hooks.
Returns
Array.
Usage
$QueryClauses = new QueryClauses(); $QueryClauses->add_price_clauses( $args, $price_range ): array;
- $args(array) (required)
- Query args.
- $price_range(array) (required)
Price range array.
-
min_price(int|string)
Optional. Min price. - max_price(int|string)
Optional. Max Price.
-
QueryClauses::add_price_clauses() QueryClauses::add price clauses code WC 10.3.3
public function add_price_clauses( array $args, array $price_range ): array {
if ( ! isset( $price_range['min_price'] ) && ! isset( $price_range['max_price'] ) ) {
return $args;
}
global $wpdb;
$adjust_for_taxes = $this->should_adjust_price_filters_for_displayed_taxes();
$args['join'] = $this->append_product_sorting_table_join( $args['join'] );
if ( isset( $price_range['min_price'] ) ) {
$min_price_filter = intval( $price_range['min_price'] );
if ( $adjust_for_taxes ) {
$args['where'] .= $this->get_price_filter_query_for_displayed_taxes( $min_price_filter, 'max_price', '>=' );
} else {
$args['where'] .= $wpdb->prepare( ' AND wc_product_meta_lookup.max_price >= %f ', $min_price_filter );
}
}
if ( isset( $price_range['max_price'] ) ) {
$max_price_filter = intval( $price_range['max_price'] );
if ( $adjust_for_taxes ) {
$args['where'] .= $this->get_price_filter_query_for_displayed_taxes( $max_price_filter, 'min_price', '<=' );
} else {
$args['where'] .= $wpdb->prepare( ' AND wc_product_meta_lookup.min_price <= %f ', $max_price_filter );
}
}
return $args;
}