使用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)));