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 7.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 ) { // phpcs:disable $results = $wpdb->get_col( $wpdb->prepare( " SELECT DISTINCT `product_or_parent_id` FROM {$wpdb->prefix}wc_product_attributes_lookup WHERE `taxonomy` = %s AND `term_id` IN ({$term_ids}) ", $taxonomy ) ); // phpcs:enable } if ( 'and' === $query_type ) { // phpcs:disable $results = $wpdb->get_col( $wpdb->prepare( " SELECT DISTINCT `product_or_parent_id` FROM {$wpdb->prefix}wc_product_attributes_lookup WHERE `taxonomy` = %s AND `term_id` IN ({$term_ids}) GROUP BY `product_or_parent_id` HAVING COUNT( DISTINCT `term_id` ) >= %d ", $taxonomy, $term_count ) ); // phpcs:enable } return $results; }