wordpress的query_posts()详解

query_posts()是用来控制loop的。
loo接受的参数,默认情况下是从地址传递过来的。query_posts()相对于地址传递过来的参数优先级更高。因此,把query_posts()放在loop开始之前,loop将使用query_posts()传递过来的参数。理解了这一点,对于下面参数的调用会有帮助!
普通使用:
1.在首页只显示一篇文章(设定显示一个页面是在后台的“设置”->“阅读”设置)
2.显示在一个特定时间段的文章
3.显示最新文章
4.改变文章显示的排序
5.只显示某一分类的文章
6.不显示某一分类或者多个分类的文章
<?php
//The Query
query_posts(‘posts_per_page=5’);
//The Loop
if ( have_posts() ) : while ( have_posts() ) : the_post();
..
endwhile; else:
..
endif;
//Reset Query
wp_reset_query();
?>
示例:
1.主页不显示某一分类的日志
<?php if(is_home()) {query_posts(“cat=-3”);}?>
2.获得特定分类的日志
<?php query_posts(‘p=5’);?>
只显示日志ID为5的文章
wordpress默认的固定链接地址是http://your_site_url/?p=number
3.获得特定页面
<?php query_posts(‘page_id=7’);?>
只显示page_id为7的页面
<?php query_posts(‘pagename=about’);?>
返回“关于”页面
<?php query_posts(‘pagename=parent/child’);?>
返回母页面的子页面
创建所有文章列表并提供分页功能
<?php query_posts($query_string.’posts_per_page=-1′);
while(have_posts()) {the_post();
put your loop here;
}
?>
query_posts()的参数
类别参数:cat;category_name
只显示来自一个类别的文章
query_posts(‘cat=4’);
显示来自多个分类的文章
query_posts(‘cat=2,7,9,12’);
删除某个类别的文章
query_posts(‘cat=-2’);
类别参数:tag
一个标签:query_posts(‘tag=cooking’);
两个标签:<code>query_posts(‘tag=bread,baking’);
三个标签:query_posts(‘tag=bread+baking+recipe’);
作者参数:author_name;author
文章,页面参数:p,name,page_id,pagename,showposts
时间参数
得到某个特别的时间段内发表的文章
* hour=
* minute=
* second=
* day= – 一个月中的每一天; 显示,例如,十五号发表的所有文章。
* monthnum=
* year=
网页参数
* paged=2 -显示使用”以前发表的文章”链接时,通常在网页2上显示的文章。
* posts_per_page=10 -每个网页显示的文章数目;-1这个值,会显示所有的文章。
* order=ASC -按时间顺序显示文章,以相反的顺序显示DESC(默认)
Offset 参数
你不能转移或者忽视一个或者更多的原始文章,这些文章一般是你的query同时使用offset参数收集到的。
下面的函数会显示(1)最近的5篇文章
query_posts(‘showposts=5&offset=1’);
根据参数排序
根据这个区给得到的文章排序
* orderby=author
* orderby=date
* orderby=category
* orderby=title
* orderby=modified
* orderby=modified
* orderby=menu_order
* orderby=parent
* orderby=ID
* orderby=rand
同时考虑”ASC”或者的”DESC”的排序参数
联合参数
你可能从上面的例子中注意到,你使用一个&(&符号)将参数组合在一起,像:
query_posts(‘cat=3&year=2004’);
类别13,关于当前月份显示在主页上的文章:
if (is_home())  {
query_posts ($query_string . ‘&cat=13&monthnum=’ . date(‘n’,current_time(‘timestamp’))); }
在2.3版本中,这个参数组合会返回属于类别1同时属于类别3的文章,只显示两篇(2)文章,根据标题,按降序排列:
query_posts(array(‘category__and’=>array(1,3),’showposts’=>2,’orderby’=>title,’order’=>DESC));
在2.3和2.5版本中,你可能期待下面的内容,返回属于类别1并且标签为”苹果”的所有文章
query_posts(‘cat=1&tag=apples’);
一个bug阻止这个运行。请看看Ticket #5433,一个工作区要搜索几个使用+的标签
query_posts(‘cat=1&tag=apples+apples’);
对于先前的查询,这个会产生期待的结果。注意使用’cat=1&tag=apples+oranges’能够产生期待的结果。

参考链接

本站提供的服务

  • wordpress主题、插件、开发、优化以及WordPress虚拟主机、VPS售卖
  • 自用Shadowsocks 服务器搭建 RMB50/次
  • VPN(PPTP&L2TP)流量出售: 5RMB/GB,10GB起售,8条台湾、美国、香港线路
    • 联系QQ:2564692806

      打赏作者
      这篇文章帮助很大,重重有赏

      您的支持将鼓励我们继续创作!

      [微信] 扫描二维码打赏

      [支付宝] 扫描二维码打赏

      正在跳转到PayPal...
One Comment

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注