|  | 
 
| 制作wordpress主题的时候经常会用到query_posts()函数,通过它可以实现各种特殊的要求,如获得特定的文章日志、排除某一分类等即query_posts() 函数可以用来控制在主循环(Loop)中显示特定的日志。可能很多人对主循环不太理解,那么就举个栗子吧: 
 首页、存档页的这些文章都是在主循环中的。在不使用query_posts()函数控制的情况,首页、存档页等都是按照文章的发布时间列出你博客上所有已发布的文章,而如果你想控制哪些文章可以显示,哪些文章不显示,文章按照什么样的方法排序等,那么你就要用到query_posts()函数了。
 
 使用此函数要做的就是在index.php或者其他模板文件中查找if (have_posts())或while (have_posts()),在前面添加query_posts函数即可。不过以上方式可能会导致首页无法分页,可以将query_posts函数改成这样的行式,详细代码如下
 
 
 复制代码<?php 
$args = array(
    'cat' => 1,
    'category_name' => 'wpfunc'
);
$args = array_merge($args, $wp_query->query); //这一行代码是必须的,不然不能分页
query_posts($args);
if( have_posts() ){
    while( have_posts() ){
        //获取下一篇文章的信息,并且将信息存入全局变量 $post 中
        the_post();
        }
}?>
 
 语法结构
 
 
 复制代码<?php query_posts(‘cat=4′); ?> //只设置一个循环条件,显示类别ID为4的文章
<?php query_posts(array(
    'cat' => 1,
    'category_name' => wpfunc
    )
); 
?>
//设置多个循环条件
 参数
 
 cat:根据ID显示类别,多个分类用英文逗号隔开,ID前加负号’-‘表示排除该分类category_name:根据别名显示类别,输出属于某个类别名的文章
 tag:显示与某个标签相关的文章,输出某个标签的文章
 posts_per_page:显示的文章数目,-1这个值,会显示所有的文章
 author_name:根据作者显示文章数目
 showposts:显示的文章数量
 order:按时间顺序显示文章,包括ASC 和DESC(默认)
 post_type:根据文章形式来显示文章
 实例
 
 cat
 
 用法:
 复制代码<?php query_posts(‘cat=4′); ?>
category_name
 
 用法:
 复制代码<?php query_posts(‘category_name=wpfunc’); ?>
tag
 
 用法:
 复制代码<?php query_posts(‘tag=wordpress’); ?>
 //获得拥有任何这样的标签的文章(可以是拥有一个标签也可以是多个标签同时拥有)
 
 复制代码<?php query_posts(‘tag=wordpress,php’); ?>
 //获取拥有这三个标签的文章
 
 复制代码<?php query_posts(‘tag=wordpress+php+mysql’);  ?>
 //设定每页显示数量,默认是10,posts_per_page:
 
 复制代码<?php query_posts(‘posts_per_page=10’);  ?>
 //按作者名显示author_name:
 
 复制代码<?php query_posts(‘author_name=许小珂’);  ?>
 //排序方式 orderby
 
 复制代码orderby=author
orderby=date
orderby=category
orderby=title
orderby=modified
orderby=modified
orderby=menu_order
orderby=parent
orderby=ID
 //显示指定ID的内容 showposts
 
 复制代码<?php query_posts(‘showposts=5’);  ?>
 
 使用该函数后,要以wp_reset_query()函数结束
 | 
 |