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' ); |