在 WordPress 中,使用 WP_Query
进行文章查询是最常见的操作,学习好这方面的操作, WordPress 开发基本就学会了一半。
「WordPress果酱」将通过一系列教程讲解如何使用 WP_Query
进行 WordPress 文章查询。
我写这一系列文章的目的也是为了方便自己使用这些参数的时候方便查询,所以如果你也是经常进行 WordPress 二次开发的话,建议收藏本文。
第五讲关于分页相关的参数,分页相关的参数比较多,先简单罗列一下:
is_archive()
和 is_search()
为 true 时会覆盖 posts_per_page 参数。每页显示3篇文章:
$query = new WP_Query( array( 'posts_per_page' => 3 ) );
在一页上显示所有文章:
$query = new WP_Query( array( 'posts_per_page' => -1 ) );
通过屏蔽分页来显示所有文章:
$query = new WP_Query( array( 'nopaging' => true ) );
从第4篇文章开始显示:
$query = new WP_Query( array( 'offset' => 3 ) );
每页显示5篇文章,然后偏移最近的三篇:
$query = new WP_Query( array( 'posts_per_page' => 5, 'offset' => 3 ) );
显示第6页的文章:
$query = new WP_Query( array( 'paged' => 6 ) );
显示当前页的文章:
$query = new WP_Query( array( 'paged' => get_query_var( 'paged' ) ) );
如果设置了 paged 参数,则显示当前页的文章,未设置,则第一页的文章。
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$query = new WP_Query( array( 'paged' => $paged ) );
如果你想 get_query_var('page')
在页面模板中也能生效,那首先要设置该页为静态首页。因为 'page' 查询变量同时也是用于文章或者页面的内容中含有 <!--nextpage-->
中用于页面导航。
在静态首页显示当前页面的文章:
$paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
$query = new WP_Query( array( 'paged' => $paged ) );
仅显示第一篇置顶文章:
$sticky = get_option( 'sticky_posts' );
$query = new WP_Query( array( 'p' => $sticky[0] ) );
仅显示第一篇置顶文章,如无则显示第一篇发布的文章:
$args = array(
'posts_per_page' => 1,
'post__in' => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1,
);
$query = new WP_Query( $args );
仅显示第一篇置顶文章,如无则返回空:
$sticky = get_option( 'sticky_posts' );
$args = array(
'posts_per_page' => 1,
'post__in' => $sticky,
'ignore_sticky_posts' => 1,
);
$query = new WP_Query( $args );
if ( $sticky[0] ) {
// insert here your stuff...
}
排除所有置顶文章:
$query = new WP_Query( array( 'post__not_in' => get_option( 'sticky_posts' ) ) );