使用query_posts()函数造成分页插件不工作

十二月 13
磊子 2011年 3 条评论

这些天一直在整理wordpress函数,所以有几天没有写文章了,前些天有位朋友跟我说网站分页不管用了,点了之后一直都是显示的首页内容。当时我就知道query_posts()这个函数又开始作怪了。所以暂时就把它删了,今天查了下资料把解决办法总结了一下。

先说下原因,磊子想使用query_posts()函数(放在loop[循环]之前),来控制查询条件,比如想把某个分类不显示在首页中,但是使用之后wp_query会将传递的参数生成一个新的sql查询语句,而忽略了url上的传递的参数,比如你点击第二页的时候你的url参数中会出现2这个数字。由于你的页数传递不过去造成每个分页内容都是一样的,所以我们需要将这个参数通过query_posts()给传递过去。

第一种比较简单的方法,如果你是自定义的模板分页不工作可以使用下面的方法。

<?php 

query_posts( array( 'cat' => -8, 'paged' => get_query_var('page') ) );

?>
//cat是分类ID
//get_query_var(page)获取当前分页的值,比如页数2。

如果不是上面的情况那就使用这个方法将page换成paged,如下

<?php

query_posts(array( 'cat' => -8, 'paged' => get_query_var('paged') ));

?>

整理起来通用的方法就是

$paged = 1;
if ( get_query_var('paged') ) $paged = get_query_var('paged');
if ( get_query_var('page') ) $paged = get_query_var('page');

这样问题就解决了。在网上看了下有不少方法不过都没有这个方法快捷,还是代码简洁点好。看着清楚,如果上面不管用了那再考虑其他方法吧,大家可以去搜搜看,磊子就不贴出来了。我得继续折腾我的网站了,呵呵!

» 版权所有©转载必须以链接形式注明作者和原始出处:磊子的博客 » 使用query_posts()函数造成分页插件不工作
» 地址:( Ctrl+C 复制 )
» 如果对本站感兴趣,请到网站右下方订阅本站,将为你带来更多精彩和实用的文章
» 如果您对这篇文章感兴趣,不妨小小的 捐助(Donate)一下博主吧,不管多少都是对博主最大的支持和鼓励哟,博主-磊子感谢大家的支持!!!

3 条留言 其中:访客:2 条, 博主:1 条

  1. 夜光说:

    遇到过一次,不过不需要这样呀,如果是index.php或archive.php可以直接用while (have_posts()) : the_post();

    • 磊子说:

      直接用肯定可以的。那要做限定查询条件是怎么做的呢?比如限定首页不显示某个分类!

  2. 赞,多谢分享

说点什么吧




订阅本站