2015-06-04 3 views
0

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

$posts=new WP_Query($args = array ('posts_per_page'=>'1','tag_name'=>'frontpage1')); 
while ($posts->have_posts()) { 
    $posts->the_post(); 
    $arr['big']=array('id'=>get_the_id()); 
} 

foreach(array(2,3,4,5) as $n){ 
    wp_reset_postdata(); 
    wp_reset_query(); 
    $posts=new WP_Query($args = array ('posts_per_page'=>'1','tag_name'=>'frontpage'.$n)); 
    while ($posts->have_posts()) { 
     $posts->the_post(); 
     $arr['small'][$n]=array('id'=>get_the_id()); 
    } 
} 

дает мне это за $ обр:

[big] => 
    [id] => 56714 
[small] => 
    [2] => [id] => 56714 
    [3] => [id] => 56714 
    [4] => [id] => 56714 
    [5] => [id] => 56714 

Первый «большой» является правильным, но последующие запросы только петли через тот же результат. Как сбросить запрос?

+0

Ааа я понял это! Это была проблема с пользователями, они помещали теги в неправильные. Спасибо! –

ответ

0

Добавить wp_reset_postdata(); между каждым из запросов:

$posts=new WP_Query($args = array ('posts_per_page'=>'1','tag_name'=>'frontpage1')); 
while ($posts->have_posts()) { 
    $posts->the_post(); 
    $arr['big']=array('id'=>get_the_id()); 
} 

wp_reset_postdata(); 

foreach(array(2,3,4,5) as $n){ 
    $posts=new WP_Query($args = array ('posts_per_page'=>'1','tag_name'=>'frontpage'.$n)); 
    while ($posts->have_posts()) { 
     $posts->the_post(); 
     $arr['small'][$n]=array('id'=>get_the_id()); 
    } 
} 

https://codex.wordpress.org/Class_Reference/WP_Query

+0

Я пробовал это, но он ничего не меняет. –

+0

wp_reset_query()? –

+0

Да, я тоже это пробовал. Подождите, я положу его в код. –

0

Попробуйте это:

$posts=new WP_Query($args = array ('posts_per_page'=>'1','tag'=>'frontpage'.$n)); 

Источник: WP_Query tags

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