如果对WordPress中的页面进行修改,那么在使用query_post()方法要小心了。可能会造成不希望看见的后果。我就因为这个而悲剧了1小时。

当我在给首页增加分类文章的时候,我使用了query_post()方法,来获取分类目录下的最新文章。ok,这一切都很正常,文章也能显示。但是在首页的页尾发现有连个js文件没有显示。

我以为我的某些修改出现了问题,我就依次的向前恢复,一直都没用。最后我使用原始未修改过的版本来进行。然后再添加分类文章,发现原来是添加分类文章出现的问题。我又一行行的排查,发现是使用query_post()造成的问题。

由于使用了query_post(),导致下文的一些东西没显示出来。就是这个事情,花了1小时的时间。

一个小例子

<?php query_posts("showposts={$newsNumber}&cat={$categoryID}"); ?>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
 <?php endwhile; wp_reset_query();?>

我们来看看官方的query_post()的文档,query_post()是最简单,但不是最高效的。query_posts() 会改变主查询,并不被推荐,除非有必要才使用。在使用query_posts() 后,记得在循环结束的时候,调用wp_reset_query()才行。wp_reset_query() 恢复 $wp_query 和 global post data to the original main query。

所以,在调用的时候要注意。

一些替代的方法

可以使用 WP_Query 或者 use get_posts()替代一些查询,这样会更好一些。

我还是继续先使用query_posts()来解决我的问题吧。

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: 在WordPress使用query_posts应该小心 – https://www.chenyudong.com/archives/using-query-posts-should-be-cautious-in-wordpress.html