WordPress pre_get_posts meta_query, если мета-ключ существует, запросить все - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть пользовательский тип сообщения, где определенная мета-клавиша отмечена или нет, и я хочу запросить все сообщения, если ни одна публикация не проверена мета-ключом, и если какая-либо отмечена, то поместите эту запись над всеми сообщениями, например, как функция прикрепленных сообщений wp (orderby) а также запросить все остальные сообщения после этих сообщений.

вот моя настройка ловушки pre_get_posts:

// Load our function when hook is set
add_action( 'pre_get_posts', function( $query ) {

// Check if on frontend and main query is modified
if( ! is_admin() && $query->is_main_query() && is_post_type_archive( 'clinical_evidence' )  ) {

    $meta_key = 'paid';

    $meta_value = 'yes';

    $meta_query = array(

     'relation' => 'OR',
        array( //check to see if paid has been filled out
            'key' => $meta_key,
            'compare' => 'EXISTS',
            'value' => $meta_value
        ),
        array( //if no paid has been added show these posts too
            'key' => $meta_key,
            'compare' => 'NOT EXISTS',
            'value'   => ''
        )
    );

    $query->set('meta_query', $meta_query);

    $query->set('orderby', 'meta_value');

    $query->set('meta_key', $meta_key);

  }

});

Я пробовал с отношением И, но не работает.

Итак, что я хочу: если в сообщении есть мета-ключ (EXISTS), сначала поместите сообщение в запросе, а затем во все остальные сообщения, а если нет, то будет выполнен запрос сообщений по умолчанию.

...