使用WP_Query输出文章列表
WP_Query 是在 wp-includes/query.php 中定义的一个用于处理wordpress中文章或页面的类,使用WP_Query可以查询任何你想要的内容
用法举例
查询分类别名为team
的4篇最新文章并输出标题:
<?php
$args=array(
'category_name' => 'team',
'posts_per_page' => 4,
);
$query=new WP_Query($args);
if($query->have_posts()) : while ($query->have_posts()) : $query->the_post();
?>
<h1><?php the_title(); ?></h1>
<?php endwhile; endif; wp_reset_query(); ?>
注意:如果查询操作中使用了 the_post(),则需要在结尾调用 wp_reset_postdata() 使得之后能再次对当前文章进行查询操作。
其他常用查询举例:
显示某作者的文章
显示某作者的文章,使用作者id:
$ query = new WP_Query('author = 123');
显示某作者的文章,使用作者的' user_nicename ':
$ query = new WP_Query('author_name = rami');
显示几个作者的文章
显示几个指定作者的文章:
$ query = new WP_Query('author = 2,6,17,38');
排除某个作者的文章
显示所有文章除了某个作者的,在作者ID前面加一个' - '(减号)就可以了:
$ query = new WP_Query('author = -12');
显示某个分类目录的文章
显示属于这个分类目录的文章(包含这个分类目录的子分类),使用分类目录id:
$ query = new WP_Query('cat = 4');
显示属于这个分类目录的文章(包含这个分类目录的子分类),使用分类目录别名:
$ query = new WP_Query('category_name = staff');
显示属于这个分类目录的文章(包含这个分类目录的子分类),使用分类目录id:
$ query = new WP_Query('category__in = 4');
显示某几个分类目录的文章
显示属于这几分类目录的文章,使用分类目录id:
$ query = new WP_Query('cat = 2,6,17,38');
显示属于这几分类目录的文章,使用分类目录别名:
$ query = new WP_Query('category_name = staff,news');
排除某个分类目录的文章
显示所有文章除了属于带' - '(减号)的几个分类目录。
$ query = new WP_Query('cat = -12,-34,-56');
多个分类目录处理
显示同时属于多个分类目录的文章。下面的查询显示同时输入分类2和6的文章:
$ query = new WP_Query(array('category__and'=> array(2,6)));
需要显示属于分类2或6的文章,你可以使上面提到的猫,或使用category__in(这个不显示属于指定分类的子分类的文章):
$ query = new WP_Query(array('category__in'=> array(2,6)));
同时,你可以可以排除同时不属于某些分类的文章:
$ query = new WP_Query(array('category__not_in'=> array(2,6)));
显示包含指定标签的文章。
显示包含某个标签的文章,使用标签别名:
$ query = new WP_Query('tag = cooking');
显示包含某个标签的文章,使用标签id:
$ query = new WP_Query('tag_id = 13');
显示包含某些标签中任意一个标签的文章
$ query = new WP_Query('tag = bread,baking');
显示包含“所有”指定标签的文章:
$ query = new WP_Query('tag = bread + baking + recipe');
多标签处理
显示同时包含标签ID 37和47的文章
$ query = new WP_Query(array('tag__and'=> array(37,47)));
显示包含标签id37或47的文章,你可以使用上面提到的标签,或使用tag__in明确指定:
$ query = new WP_Query(array('tag__in'=> array(37,47)));
显示同时不包含标签ID 37和47:的文章:
$ query = new WP_Query(array('tag__not_in'=> array(37,47)));