WordPress: действие pre_get_posts объединяет date_query и meta_query - PullRequest
0 голосов
/ 18 января 2019

В моем проекте WordPress возникла проблема.

У меня много категорий. У категорий есть имя дочерней категории Новый продукт.

В настоящее время я использовал pre_get_posts, чтобы получить список сообщений на Новый продукт страниц. Если на страницах категории появится сообщение с post_date> 2018/1/15 .

Я хочу добавить пользовательский флажок keep_product в продукт, который сохранит продукт на странице Новый продукт , если post_date <2018/1/15 </strong> при его проверке.

Так что я думаю, что условия должны быть post_date > 2018/1/15** OR **keep_product = 1

Я пытаюсь создать запрос, но, похоже, WP_Query применяется только И условие для date_query и meta_query.

function pre_get_posts_function($q){
  //Code in here
    $query->set('date_query', array(
        array(
           'after' => '2018/1/15'
        );
    ));

    $query->set('meta_query', array(
      array(
            'key' => 'keep_product',
            'value' => '1'
        )
    ));
}

Я также пытаюсь создать действие posts_where, но оно игнорирует условие категории. Товар, который отмечен keep_after_60_days, будет отображаться в Новый товар страниц.

function pre_get_posts_function($q){
    //Code in here
     $query->set('date_query', array(
        array(
           'after' => '2018/1/15'
        );
    ));
    add_filter( 'posts_where', 'postmeta_new_releases',10,1);
}

function postmeta_new_releases( $where = '' ) {
    global $wpdb;
    $where .= "  OR ($wpdb->postmeta.meta_key = 'keep_product' AND $wpdb->postmeta.meta_value = 1)";   

    return $where; 
}

Может ли кто-нибудь мне помочь. Я злюсь на это через несколько дней.

Спасибо !!

...