Automattic\WooCommerce\StoreApi\Utilities
ProductQueryFilters::get_product_by_filtered_terms()
Gets product by filtered terms.
Метод класса: ProductQueryFilters{}
Хуков нет.
Возвращает
Массив
. Product IDs.
Использование
$ProductQueryFilters = new ProductQueryFilters(); $ProductQueryFilters->get_product_by_filtered_terms( $taxonomy, $term_ids, $query_type );
- $taxonomy(строка)
- Taxonomy name.
По умолчанию: '' - $term_ids(массив)
- Term IDs.
По умолчанию: array() - $query_type(строка)
- or | and.
По умолчанию: 'or'
Список изменений
Код ProductQueryFilters::get_product_by_filtered_terms() ProductQueryFilters::get product by filtered terms WC 8.7.0
public function get_product_by_filtered_terms( $taxonomy = '', $term_ids = array(), $query_type = 'or' ) { global $wpdb; $term_count = count( $term_ids ); $results = array(); $term_ids = implode( ',', array_map( 'intval', $term_ids ) ); if ( 'or' === $query_type ) { $results = $wpdb->get_col( // phpcs:disable WordPress.DB.PreparedSQLPlaceholders.UnquotedComplexPlaceholder $wpdb->prepare( " SELECT DISTINCT `product_or_parent_id` FROM {$wpdb->prefix}wc_product_attributes_lookup WHERE `taxonomy` = %s AND `term_id` IN (%1s) ", $taxonomy, $term_ids ) // phpcs:enable ); } if ( 'and' === $query_type ) { $results = $wpdb->get_col( // phpcs:disable WordPress.DB.PreparedSQLPlaceholders.UnquotedComplexPlaceholder $wpdb->prepare( " SELECT DISTINCT `product_or_parent_id` FROM {$wpdb->prefix}wc_product_attributes_lookup WHERE `taxonomy` = %s AND `term_id` IN (%1s) GROUP BY `product_or_parent_id` HAVING COUNT( DISTINCT `term_id` ) >= %d ", $taxonomy, $term_ids, $term_count ) // phpcs:enable ); } return $results; }