2016-02-17 3 views
0

Я создал один запрос Wordpress, объединив два существующих, как бы остановить второй запрос от показа сообщений, которые уже отображаются первым запросом?Скрыть повторяющиеся сообщения из объединенных циклов Wordpress

$args_for_query1 = array(
    'meta_key' => '_mcf_homeoperator', 
    'meta_value' => 'Yes', 
    'posts_per_page' => 14, 
    'cat' => 521, 
    'post__in'  => get_field('srtby_homepage', 'option', false, false), 
    'orderby'  => 'post__in' 
); 

$args_for_query2 = array(
    'posts_per_page' => 20, 
    'cat' => 12,22411, 
    'post__in'  => get_field('srtby_slotspage', 'option', false, false), 
    'orderby'  => 'post__in', 
); 

$query1 = new WP_Query($args_for_query1); 
$query2 = new WP_Query($args_for_query2); 

// Main Loop 
$args=array(
    'paged' => $paged, 
    'showposts' => 20, 
); 

$wp_query = new WP_Query($args); 
$wp_query->posts = array_merge($query1->posts, $query2->posts); 
$wp_query->post_count = $query1->post_count + $query2->post_count; 


if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); 

ответ

0

Во-первых, вы бежите 3-й запрос ($query) без всякой причины, так как вы перезапись сообщения в любом случае.

if ($query1->have_posts()) 
{ 
    if ($query2->have_posts()) 
    { 
     foreach ($query1->posts as $post) 
     { 
      foreach ($query2->posts as $key => $post_) 
      { 
       if ($post->ID == $post_->ID) 
       { 
        unset($query2->posts[$key]); 
        break; 
       } 
      } 
     } 
     if (count($query2->posts) > 0) 
     { 
      $query1->posts=array_merge($query1->posts, $query2->posts); 
      $query1->post_count=count($query1->posts); 
     } 
    } 
} 
else 
{ 
    //whatever you do if there are no posts 
} 
+0

я нужен 3-й запрос контролировать, сколько сообщений выводятся на страницу и настроить пейджинг – James

+0

@James Я думаю, что это не совсем работа, как вы ожидаете. Вы в порядке с прямыми MySQL-запросами вместо wp_query? –

Смежные вопросы