Этот метод был отправлен кем-то на форуме 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 при вызове несколько раз или других чисел? – anthonygore
@anthonygore Just 0. –
'$ postID == get_the_ID()', если это правда, $ counter var всегда будет 0. echo оба vars для тестирования, но id говорит, что происходит – David