query_posts的基本结构(无法分页)
<?php query_posts( $args ); ?> <?php while ( have_posts() ) : the_post(); ?> ... <?php endwhile; ?> <?php wp_reset_query(); ?>
query_posts函数添加在主循环前,如果后面还有循环函数,需要在循环结束后增加<?php wp_reset_query(); ?>来重置query
使用query_posts控制分类文章
<?php query_posts( "cat=1,5,6" ); ?>
只显示分类ID为1,5,6的文章,要排除分类ID为3和5的文章只需在分类ID前增加1个减号<?php query_posts( ‘cat=-3,-5′ ); ?>
使用query_posts显示特定文章
<?php query_posts( "p=2" ); ?>
只显示ID为2的文章
使用query_posts控制文章数量
<?php query_posts( "posts_per_page=5" ); ?>
显示最多5篇文章
使用query_posts控制文章排序方式
orderby=date?按发布日期排序
orderby=modified 按修改时间排序
orderby=ID 按文章ID排序
orderby=comment_count 按评论最多排序
orderby=title 按标题排序
orderby=rand 随机排序
query_posts函数多参数结构(支持分页)
<?php $paged = (get_query_var("paged")) ? get_query_var("paged") : 1; $args = array( "orderby" => "rand", "paged" => $paged ); query_posts($args); ?>
把参数写在’paged’ => $paged上面就可以了,上例中只写了一个文章排序方式为随机的参数,’orderby’ => ‘rand’,每个参数结束后用半角逗号来结束
使用query_posts控制显示哪些分类,TAG标签或特定的文章
"category__in" => array( 1, 3)
只显示分类ID为1和3的文章,如果需要排除分类ID为2和4的文章则用’category__not_in’ => array(2, 4),
要显示某个分类区间的文章,’category__in’ => range(3, 6),显示分类ID3到6的文章。
同理,需要控制显示哪些TAG标签的文章,只需要将该参数的category改为tag,如’tag__in’ => array( 5, 8),只显示标签ID为5和8的文章。
将参数的category改为post则能控制显示哪些ID的文章,’post__in’ => array(2,4,6),只显示ID为2,4,6的文章,如果只想显示置顶文章,则将array(2,4,6)改成get_option(‘sticky_posts’)
使用query_posts控制文章数量
"showposts" => 5 或 "posts_per_page" => 5
显示最多5篇文章,如果把5改成-1,则显示所有文章
使用query_posts控制显示指定自定义字段的文章
"meta_key" => "sort", "orderby" => "meta_value_num",
只显示自定义字段为sort的文章,且按照sort值的大小来排序,值填写数字就可以按照数字从大到小的顺序排序了,从而可以自由的排序文章。
在分类页中使用query_posts函数
"category__in" => array(get_query_var("cat"))
如果是在分类页中使用,需要调用当前分类的ID,那么直接在array的括号内填写get_query_var(‘cat’)。
但是如果该分类有子分类,使用上面的方法并不会显示子分类的文章,想要显示所有子分类的文章就把上面的代码替换为
"cat" => get_query_var("cat")
更多详细用法,请参考官方文档 http://codex.wordpress.org/Function_Reference/query_posts