使用简单查询的wp_Query中的无限循环

时间:2019-06-28 作者:stefanosn

此代码进入无限循环!我做错了什么?只有一个帖子叫“你好”。阻止它的唯一方法是使用break; 很快。

感谢您的帮助

 $gotop="hello there";

$args = array(

    \'s\' => $gotop,
    \'post_type\' => \'post\'

);

$wp_query = new WP_Query($args);

if ( $wp_query->have_posts() ) :  ?>

        <?php

        while ( $wp_query->have_posts() ) {
      $wp_query->the_post();
}

else:
  echo "nothing found.";
endif;
?>

3 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

我不确定为什么它会导致无限循环,但请确保不要使用$wp_query 作为自定义查询的变量名。这是一个reserved global variable 用于主查询。请为变量使用其他名称。我还建议使用wp_reset_postdata() 循环后:

$my_query = new WP_Query( $args );

if ( $my_query->have_posts() ) :
    while ( $my_query->have_posts() ) {
        $my_query->the_post();
    }
else:
  echo "nothing found.";
endif;

wp_reset_postdata();

SO网友:Chetan Vaghela

添加wp\\u reset\\u query();while循环之后。

$gotop="hello there";

$args = array(

    \'s\' => $gotop,
    \'post_type\' => \'post\'

);

$my_query = new WP_Query($args);

if ( $my_query->have_posts() ) :  

        while ( $my_query->have_posts() ) {
             $my_query->the_post();
        }
        wp_reset_query();

else:
  echo "nothing found.";
endif;
如果这对你有用,请告诉我!

SO网友:dragos.nicolae

根据WP codex,have\\u posts()将在成功时返回True,失败时返回false。在循环中调用此函数将导致无限循环。所以你需要使用endwhile;

    $gotop="hello there";

$args = array(

    \'s\' => $gotop,
    \'post_type\' => \'post\'

);

$wp_query = new WP_Query($args);

if ( $wp_query->have_posts() ) :  ?>

        <?php

        while ( $wp_query->have_posts() ) {
      $wp_query->the_post();
      endwhile;
}

else:
  echo "nothing found.";
endif;
?>

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post