Есть сгруппированные продукты.Туры / Экскурсии.У каждого родительского продукта есть дети.Детские товары имеют собственные мета - wt_start
и wt_expired
(даты начала и окончания тура)
Я пытаюсь изменить результаты поиска.Итак, при переходе по ссылке site.com/?s=&post_type=product&wt_from=2018-11-27&wt_to=2019-07-24
мне нужно отобразить туры, которые совпадают с этими датами.
Существует код, который работает почти хорошо:
function me_search_query( $query ) {
if ( $query->is_search ) {
$meta_query = array();
$from = strtotime( get_query_var('wt_from') );
$to = strtotime( get_query_var('wt_to') );
// add meta_query elements
if( !empty( $from ) ){
$meta_query[] = [
'key' => 'wt_start',
'value' => [
$from,
$to
],
'compare' => 'BETWEEN'
];
}
if( !empty( $to ) ){
$meta_query[] = [
'key' => 'wt_expired',
'value' => [
$from,
$to
],
'compare' => 'BETWEEN'
];
}
if( count( $meta_query ) > 1 ){
$meta_query['relation'] = 'OR';
}
if( count( $meta_query ) > 0 ){
$query->set( 'meta_query', $meta_query );
}
};
}
add_filter( 'pre_get_posts', 'me_search_query');
Но в результатах поиска мне нужно отображать только родительские продукты .Приведенный ниже код помогает скрыть дочерние продукты и отображать только родителей, но родительские продукты не имеют этих мета wt_start
, wt_expired
.Так что в моей ситуации это не поможет.
add_action( 'woocommerce_product_query', 'only_grouped_products_query' );
function only_grouped_products_query( $q ) {
print_r($q);
//get current loop query
$taxonomy_query = $q->get('tax_query') ;
//appends the grouped products condition
$taxonomy_query['relation'] = 'AND';
$taxonomy_query[] = array(
'taxonomy' => 'product_type',
'field' => 'slug',
'terms' => 'grouped'
);
$q->set( 'tax_query', $taxonomy_query );
print_r($q->get('tax_query'));
}