2015-10-02 1 views
1

У меня есть цикл, который тянет все новости, однако есть три основные истории, установленные ACF. Это основные, вторичные и третьи. Это не было бы проблемой, если бы было задано только одно сообщение для каждого поля. Тем не менее, клиент хочет иметь возможность просто установить новый главный пост, не беспокоясь об удалении старых.Цикл WordPress игнорирует первое сообщение из трех отдельных meta_values ​​

Чтобы сделать эту работу, я пытаюсь заставить цикл игнорировать первое из этих трех полей, показывая остальное И другие сообщения, которые установлены на «Нет».

Я пытаюсь что-то вроде этого, но я просто не вижу, как это сделать.

$args = array(
       // 'offset' => 1, 
       'posts_per_page' => -1, 

       'meta_query' => array(
        array(
         'offset' => 1, 
         'key'  => 'main_story', 
         'value'  => 'Secondary', 
         'compare' => 'NOT', 
         ) 
        ), 

       'meta_query' => array(
        array(
         'offset' => 1, 
         'key'  => 'main_story', 
         'value'  => 'Third', 
         'compare' => 'NOT', 
         ) 
        ), 

       'meta_query' => array(
        array(
         'offset' => 1, 
         'key'  => 'main_story', 
         'value'  => 'Main', 
         'compare' => 'NOT', 
         ) 
        ), 
       ); 

Я знаю, смещение устраняет возможность постраничной что очень важно, но я видел https://codex.wordpress.org/Making_Custom_Queries_using_Offset_and_Pagination, а также сказали, способ обойти это. Эта часть важнее пока.

ответ

0

Вот как я, наконец, вокруг не будучи в состоянии сделать выше

<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?> 

<?php 

$excluded_key = "main_story"; 
$excluded_val = array("Main", "Secondary", "Third"); 
$exclude_ids = array(); 

?> 

<?php 

foreach ($excluded_val as $exclude) { 

    $args = array(
     'posts_per_page' => 1, 
     'order'      => 'DESC', 
     'meta_query'   => array(
      array(
       'key'    => $excluded_key, 
       'value'    => $exclude, 
       ) 
      ) 
     ); 

    $excluded_id = get_posts($args); 

    foreach($excluded_id as $to_exclude) { 
     $exclude_ids[] = $to_exclude->ID; 
    } 
} 


?> 

<?php 

$args = array(
    'post__not_in'  => $exclude_ids, 
    'paged'      => $paged 
    ); 

    ?> 

    <?php $the_query = new WP_Query($args); ?> 

    <?php if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?> 
Смежные вопросы