WordPress中query_posts函数的详细用法

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控制文章排序方式

 <?php query_posts( "orderby=value" ); ?>
  • 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’),参考?如何获取当前分类的ID

但是如果该分类有子分类,使用上面的方法并不会显示子分类的文章,想要显示所有子分类的文章就把上面的代码替换为

"cat" => get_query_var("cat")

更多详细用法,请参考官方文档 http://codex.wordpress.org/Function_Reference/query_posts

 
QQ在线咨询
销售咨询
销售电话
+852-55635552
+852-60730313