2014-11-29 4 views
1

Этот метод был отправлен кем-то на форуме Wordpress, чтобы получить сообщение «число» (1, 2, 3, 4 и т. Д.) Из его идентификатора (который не упорядочивается последовательно) , Я немного изменил его, чтобы запросить только слайды.Перечисление сообщений в Wordpress не будет работать дважды

function Get_Post_Number($postID){ 
    $temp_query = $wp_query; 
    $postNumberQuery = new WP_Query(array(
     'ignore_sticky_posts' => 1, 
     'posts_per_page' => 20, 
     'post_type' => 'slide')); 

    $counter = 0; 
    $postCount = 0; 
    if($postNumberQuery->have_posts()) : 
     while ($postNumberQuery->have_posts()) : $postNumberQuery->the_post(); 
      if ($postID == get_the_ID()){ 
       $postCount = $counter; 
      } else { 
       $counter++; 
      } 
    endwhile; endif; 
    wp_reset_query(); 
    $wp_query = $temp_query; 
    return $postCount; 
} 

Он отлично работает при вызове один раз и вернет правильный номер.

Get_Post_Number(get_the_ID()) //Returns 3 (for instance) 

Но когда вызывается дважды, он больше не работает:

Get_Post_Number(get_the_ID()) //Returns 3 (for instance) 
Get_Post_Number(get_the_ID()) //Returns 0 (wrong!) 

Это приводит меня к мысли, что функция имеет побочные эффекты, но я не уверен, как отменить их. Wordpress говорит, чтобы позвонить wp_reset_query() после того, как вы сделаете свой собственный «настраиваемый цикл», но функция уже делает это.

Что мне делать?

+0

Всегда ли он возвращает 0 при вызове несколько раз или других чисел? – anthonygore

+0

@anthonygore Just 0. –

+0

'$ postID == get_the_ID()', если это правда, $ counter var всегда будет 0. echo оба vars для тестирования, но id говорит, что происходит – David

ответ

0

Я только что удалил wp_reset_query(), и это сработало. (Несмотря на то, что Wordpress говорит вам, что вы это называете !?)

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

  • Нет связанных вопросов^_^