WordPress模板标签query_posts用来限定The Loop循环的查询条件,query_posts()函数可以产生一个新的查询SQL的参数,而忽略URL接收的参数。如果不希望忽略,例如搜索结果页,那么可以在调用中使用$query_string。
query_posts()函数仅用于修改主循环,而不是一种在页面上生成次级循环的手段。如果你希望在主循环外另外生成循环,应该新建独立的WP_Query对象,用这些对象生成循环。在主循环外的循环上使用query_posts()会导致主循环运行偏差,并可能在页面上显示出你不希望看到的内容。
query_posts($query)
分类参数:
只显示特定分类下的文章。
标签参数:
显示特定标签下的文章。
作者参数:
你也可以根据作者来选择文章。
文章与页面参数:
检索单篇文章或页面。
置顶文章参数:
置顶文章功能引入于WordPress 2.7版本。在查询中,被设为“置顶”的文章会显示在其它文章之前,除非该文章已经被caller_get_posts=1参数排除。
返回第一篇置顶文章:
$args = array(
'posts_per_page' => 1,
'post__in' => get_option('sticky_posts'),
'caller_get_posts' => 1
);
query_posts($args);
该方法返回最新发表的置顶文章,若当前无置顶文章,则返回最新发表的文章。
时间参数:
检索特定时间段内发表的文章。
offset(偏移)参数:
排除Loop循环中出现的第一篇文章,以下代码显示最近一篇文章之后的5篇文章:
query_posts('posts_per_page=5&offset=1');
排序参数:
orderby可用的值:
order可用的值:
自定义字段参数:
根据自定义关键字或值检索文章(或页面)。
返回关键字为“color”且值为“blue”的文章:
query_posts('meta_key=color&meta_value=blue');
返回自定义字段关键字为“color”的文章,无论自定义字段值为何:
query_posts('meta_key=color');
返回自定义字段值为“color”的文章,无论关键字为何:
query_posts('meta_value=color');
返回自定义字段值为“green”的页面,无论自定义字段关键字为何:
query_posts('post_type=page&meta_value=green');
返回自定义关键字为“color”、自定义字段值不为“blue”的文章和页面:
query_posts('post_type=any&meta_key=color&meta_compare=!=&meta_value=blue');
返回自定义字段关键字为“miles”、自定义字段值小于等于22的文章。注意,字段值99会被看做大于字段值100,因为数据是以字符串形式而不是数字形式存储的。
query_posts('meta_key=miles&meta_compare=<=&meta_value=22');
在Loop循环之前插入以下代码:
$args = array(
'category__in' => 2,
);
query_posts($args);
$args数组中可以根据自己的需要指定任意数量的参数。
如果需要分页功能,在数组之前加入代码:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
使用query_posts()函数,一定要在循环结束时使用wp_reset_postdata()函数来重置query。