View Single Post
  #1   IP: 112.87.85.4
Old 2015-06-14, 06:29 AM
Jaxton Jaxton is offline
初级会员
 
Join Date: 2011-09-03
Posts: 1
Jaxton 现在声名狼藉
Default wordpress 使用query_posts()查询函数导致if语句判断失效问题

query_post是许多主题都有用到的函数, 可以用来显示最近更新的文章或者随机文章等, 例如显示8篇最新文章的代码就有query_post的影子.

query_post是Wordpress经常用到的判断函数, 在一开始发现问题时候排除所有可能的语法错误后检查主题的所有代码发现只有在query_post出现以后接下来的判断函数就失效了(不执行整个if语句了).

WordPress官方文档中指出执行query_post之后会影响在其之下的判断函数, 需要在判断函数前加上wp_reset_query重置查询函数

如:


<?php wp_reset_query(); if (is_page('2') ) { echo 'this is page 2!'; } ?>
或者我们可以在判断句之后加上wp_reset_query, 也可以只在query_post之后加上重置, 这样这个query_post就不会影响到下面的任何判断函数了.

如:<ul>
<?php query_posts('posts_per_page=10&cat=73');?>
<?php if(have_posts()):while(have_posts()):the_post(); ?>
<li><span class="grayz">· </span><a href="<?php the_permalink(); ?>" target="_blank" class="black "><?php echo cut_str($post->post_title,36); ?></a></li>
<?php endwhile;?>
<?php else:?>
<p>Sorry,no posts matched your criteria.</p>
<?php endif;wp_reset_query(); ?>
</ul>
Reply With Quote