Try replacing `'operator' => 'AND'` with `'relation'=>'AND'` Updated Code Snippet: $current_color = get_queried_object_id(); $query = new WP_Query( array( 'post_type' => 'product', 'post_status' => 'publish', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', 'tax_query' => array( 'relation' => 'AND' array( 'taxonomy' => 'pa_color', 'field' => 'term_id', 'terms' => $current_color, ), array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => $cats ) ) ) ); Reference : https://developer.wordpress.org/reference/classes/wp_query/#taxonomy-parameters ( **Multiple Taxonomy Handling** ) Edit 1: You can edit above query to return only `ids` ( 'fields' => 'ids' ) and use `get_terms` for those IDs to get the list of categories get_terms( array( 'taxonomy' => 'product_cat', 'object_ids' => $posts_matching_criteria ); Ref 1 : https://developer.wordpress.org/reference/functions/get_terms/ Ref 2 : https://developer.wordpress.org/reference/classes/wp_term_query/__construct/#user-contributed-notes