wordpress解决分类页面分页代码失效的方法

远航在制作主题分类页面的时候碰到这样一个问题,就是调用分类页面下的文章,分页代码会失效,包括使用分页插件也不起作用。具体表现为不管点击哪一个分页,都只会显示第一页的内容,没有出现页面跳转至目标页面的效果。

原因分析:

query_posts()放在LOOP(循环)之前起到限定查询条件的作用,如果你向 query_posts()传递参数,那么wp_query会将你传递的参数生成一个sql查询语句,同时它会忽略来自url的参数,更不会以此为查询依据了,这就造成了这样的现象,但是每个分页内容都是一样的,这就佐证了wp_query生成的查询语句阻止了url参数查询,最终导致了首页分页功能失效。

解决方法:

向query_posts()函数传参时使用$query_string,让他接收来自url的参数。
通常我们的分类调用方法为query_posts,就是向这个函数里添加$query_string即可解决。

实例演示

比如,远航之前的分类页面文章输出代码为:

1
2
<?php $posts = query_posts('cat=7&showposts=2'); ?>
<?php while(have_posts()) : the_post(); ?>

修改后的代码为

1
2
3
4
5
6
7
<?php
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=7&showposts=' . $limit=2 . '&paged=' . $paged);//cat为调用分类ID,limit为每页显示数量
$wp_query->is_archive = true; $wp_query->is_home = false;
?>
<?php while(have_posts()) : the_post(); ?>

OK,完美解决!

给我留言