WooCommerce.Найти родительские продукты по мета-значению детей - PullRequest
0 голосов
/ 29 ноября 2018

Есть сгруппированные продукты.Туры / Экскурсии.У каждого родительского продукта есть дети.Детские товары имеют собственные мета - 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'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...