这些天一直在整理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');

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