Как в wp query вывести 10 постов, исключив при этом текущий и еще 2 по определенным метатегам?

Есть сайт на wordpress. Мне нужно вывести 10 заголовков постов на single странице по определенным параметров исключая текущую и первые две по определенным метатегам.

   $cat = get_the_category();
    $args = array(
        'numberposts' => 10,
        'category_name'    => $cat[0]->category_nicename,
        'post__not_in' =>   array(get_the_ID()),
        'order'   => 'ASC',
        'meta_query' => array(
           array(
               'key' => 'age',
               'value' => array(3, 4),
               'compare' => 'NOT_IN',
               'numberposts' => 2
           )
        )   
    );
    $prognoz = get_posts( $args );

У меня основная проблема как исключить 2 поста по мета тегам. Как это можно сделать?


Ответы (1 шт):

Автор решения: WP Punk

За 1 запрос это сделать не получится. Делайте 1-м запросом получение 2-х постов, а во втором исключайте их.

$cat = get_the_category();
$exclude = get_posts( [
    'numberposts' => 2,
    'category_name'    => $cat[0]->category_nicename,
    'post__not_in' =>   array(get_the_ID()),
    'order'   => 'ASC',
    'fields' => 'ids',
    'meta_query' => array(
       array(
           'key' => 'age',
           'value' => array(3, 4),
           'compare' => 'NOT_IN',
       )
    )   
] );
$args = array(
    'numberposts' => 10,
    'category_name'    => $cat[0]->category_nicename,
    'post__not_in' =>   array(get_the_ID()) + $exclude,
    'order'   => 'ASC',
);
$prognoz = get_posts( $args );
→ Ссылка