Automattic\WooCommerce\Blocks\BlockTypes
ProductQuery::merge_queries
Merge in the first parameter the keys "post_in", "meta_query" and "tax_query" of the second parameter.
Метод класса: ProductQuery{}
Хуков нет.
Возвращает
Массив.
Использование
// private - только в коде основоного (родительского) класса $result = $this->merge_queries( ...$queries );
- ...$queries(array[]) (обязательный)
- Query arrays to be merged.
Код ProductQuery::merge_queries() ProductQuery::merge queries WC 10.6.2
private function merge_queries( ...$queries ) {
$merged_query = array_reduce(
$queries,
function ( $acc, $query ) {
if ( ! is_array( $query ) ) {
return $acc;
}
// If the $query doesn't contain any valid query keys, we unpack/spread it then merge.
if ( empty( array_intersect( $this->get_valid_query_vars(), array_keys( $query ) ) ) ) {
return $this->merge_queries( $acc, ...array_values( $query ) );
}
return $this->array_merge_recursive_replace_non_array_properties( $acc, $query );
},
array()
);
/**
* If there are duplicated items in post__in, it means that we need to
* use the intersection of the results, which in this case, are the
* duplicated items.
*/
if (
! empty( $merged_query['post__in'] ) &&
is_array( $merged_query['post__in'] ) &&
count( $merged_query['post__in'] ) > count( array_unique( $merged_query['post__in'] ) )
) {
$merged_query['post__in'] = array_unique(
array_diff(
$merged_query['post__in'],
array_unique( $merged_query['post__in'] )
)
);
}
return $merged_query;
}