Automattic\WooCommerce\StoreApi\Utilities
ProductQueryFilters::get_product_by_filtered_terms()
Gets product by filtered terms.
Method of the class: ProductQueryFilters{}
No Hooks.
Return
Array
. Product IDs.
Usage
$ProductQueryFilters = new ProductQueryFilters(); $ProductQueryFilters->get_product_by_filtered_terms( $taxonomy, $term_ids, $query_type );
- $taxonomy(string)
- Taxonomy name.
Default: '' - $term_ids(array)
- Term IDs.
Default: array() - $query_type(string)
- or | and.
Default: 'or'
Changelog
ProductQueryFilters::get_product_by_filtered_terms() ProductQueryFilters::get product by filtered terms code 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; }