状态

有关文章状态的查询。文章状态指的是文章当前处于什么情况,比如 “已发布”、“草稿”、“待审核” 和 “定时发布” 等等,文章状态是可以由主题或者插件开发者扩展的。 关于文章状态可以使用一个参数:
post_status(字符串 | 数组):文章的状态,一般默认都是 publish(已发布)


//获取一个状态的文章
//获取草稿文章:
$query = new WP_Query( 'post_status=draft' );
//获取多个状态的文章
//获取多个状态下的文章:
$query = new WP_Query( array( 'post_status' => array( 'pending', 'draft', 'future' ) ) );
//获取全部状态的文章:
$query = new WP_Query( 'post_status=any' );

分页

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


//设置每页文章数
//设置每页的文章数量为 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' );