WordPress 用 WP_Query 分页

当我们使用WP_Query查询时,如果只有一个或两个结果,则可以直接显示它,但是如果有数百个以上的结果,则可能需要分页。

分页相关参数

有关分页的查询,有 7 个参数可以使用:
nopaging(布尔):将文章分页还是全部获取。默认是 False:分页
posts_per_page(整数):每页显示多少文章,如果设置成 –1 则不分页
posts_per_archive_page(整数):和 posts_per_page 是一样的,不过这个只有在当前查询是根据存档或是搜索的情况下才生效
offset(整数):偏移值,去掉前边几篇文章,再从后边找回来
paged(整数):页码,指定文章分页的当前页
page(整数):静态首页的页码
ignore_sticky_posts(布尔):是否忽略指定文章,要忽略置顶文章可以设置成 True,默认是 False

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//设置每页文章数
//设置每页的文章数量为 3 篇文章:
$query = new WP_Query( 'posts_per_page=3' );
//显示全部文章
//获取全部文章,不分页(方法一):
$query = new WP_Query( 'nopaging=1' );
//获取全部文章,不分页(方法二):
$query = new WP_Query( 'posts_per_page=-1' );
//偏移
//从第 4 个文章开始获取:
$query = new WP_Query( 'offset=3' ) );
//每页 5 篇文章,而但向前移位 3 篇:
$query = new WP_Query( array( 'posts_per_page' => 5, 'offset' => 3 ) );
//获取第 N 页文章
//获取第 6 页的文章:
$query = new WP_Query( 'paged=6' );
//获取当前页文章
//获取当前页文章:
$query = new WP_Query( array( 'paged' => get_query_var( 'paged' ) ) );
//获取当前页文章,如果没有指定页码则默认第一页:
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$query = new WP_Query( array( 'paged' => $paged ) );
//置顶文章
//获取第一篇置顶文章:
$sticky = get_option( 'sticky_posts' );
$query = new WP_Query( 'p=' . $sticky[0] );
//获取第一篇置顶文章,如果没有置顶文章则获取一篇最新的文章:
$args = array(
    'posts_per_page'      => 1,
    'post__in'            => get_option( 'sticky_posts' ),
    'ignore_sticky_posts' => 1,
);
$query = new WP_Query( $args );
//排除置顶文章
//排除全部置顶文章:
$query = new WP_Query( array( 'post__not_in' => get_option( 'sticky_posts' ) ) );
//忽略指定文章的置顶性,在循环里按正常排序出现:
$query = new WP_Query( 'ignore_sticky_posts=1' );