WC_Query::price_filter_post_clauses()
Custom query used to filter products by price.
Метод класса: WC_Query{}
Хуки из метода
Возвращает
Массив
.
Использование
$WC_Query = new WC_Query(); $WC_Query->price_filter_post_clauses( $args, $wp_query );
- $args(массив) (обязательный)
- Query args.
- $wp_query(WP_Query) (обязательный)
- WP_Query object.
Список изменений
С версии 3.6.0 | Введена. |
Код WC_Query::price_filter_post_clauses() WC Query::price filter post clauses WC 9.6.1
public function price_filter_post_clauses( $args, $wp_query ) { global $wpdb; // phpcs:ignore WordPress.Security.NonceVerification.Recommended if ( ! $wp_query->is_main_query() || ( ! isset( $_GET['max_price'] ) && ! isset( $_GET['min_price'] ) ) ) { return $args; } // phpcs:disable WordPress.Security.NonceVerification.Recommended $current_min_price = isset( $_GET['min_price'] ) ? floatval( wp_unslash( $_GET['min_price'] ) ) : 0; $current_max_price = isset( $_GET['max_price'] ) ? floatval( wp_unslash( $_GET['max_price'] ) ) : PHP_INT_MAX; // phpcs:enable WordPress.Security.NonceVerification.Recommended /** * Adjust if the store taxes are not displayed how they are stored. * Kicks in when prices excluding tax are displayed including tax. */ if ( wc_tax_enabled() && 'incl' === get_option( 'woocommerce_tax_display_shop' ) && ! wc_prices_include_tax() ) { $tax_class = apply_filters( 'woocommerce_price_filter_widget_tax_class', '' ); // Uses standard tax class. $tax_rates = WC_Tax::get_rates( $tax_class ); if ( $tax_rates ) { $current_min_price -= WC_Tax::get_tax_total( WC_Tax::calc_inclusive_tax( $current_min_price, $tax_rates ) ); $current_max_price -= WC_Tax::get_tax_total( WC_Tax::calc_inclusive_tax( $current_max_price, $tax_rates ) ); } } $args['join'] = $this->append_product_sorting_table_join( $args['join'] ); $args['where'] .= $wpdb->prepare( ' AND NOT (%f<wc_product_meta_lookup.min_price OR %f>wc_product_meta_lookup.max_price ) ', $current_max_price, $current_min_price ); return $args; }