WonderCSS

wordpress技巧query_posts()函数介绍

制作wordpress主题的时候经常会用到query_posts(),通过它可以实现各种特殊的要求,如获得特定的文章日志、排除某一分类等。query_posts()函数的作用是在主循环Loop中限制所需要的条件,wp_query会根据参数进行SQL查询,而忽视通过URL接收到的其它的参数,当然如果想不忽略,可以在调用中使用$query_string。

query_posts() 函数参数

显示属于某个类别的文章

  • cat:根据ID显示类别,多个分类用英文逗号隔开,ID前加负号’-‘表示排除该分类
  • category_name:根据名称显示一个类别

query_posts(‘cat=4′);//只显示来自一个类别ID的文章
query_posts(‘category_name=Staff Home’);//只显示属于某个类别名的文章
query_posts(‘cat=-3′);//显示所有的文章,但是类别ID前面有个’-’(负号)负号的类被除外。

显示与某个标签相关的文章


query_posts(‘tag=cooking’);//为某个标签提取文章
query_posts(‘tag=bread,baking’);//获得拥有任何这样的标签的文章
query_posts(‘tag=bread+baking+recipe’);//获取拥有这三个标签的文章

作者参数

  • author_name=Harriet
  • author=3

author_name 在 user_nicename 区操作, 同时作者 在作者id上操作。

文章\网页参数

返回一篇单独的文章或者一个单独的网页

  • p=1 – 使用文章 ID来显示第一篇文章
  • name=first-post – 使用 post Slug 显示第一篇文章
  • page_id=7
  • pagename=about
  • showposts=1 (你可以使用 showposts=3,或者其它的任何数字显示一定数目的文章)

由于 模板层级方面的原因, home.php先执行了。这意味这你可以编写一个home.php,home.phh调用query_posts()重新得到一个特别的网页并且将那个 网页设置为你的首页。没有任何插件或者hacks,你需要运行一个机制,并且显示和维护一个非博客的首页。

更有用的方法,可能是利用WP的网页功能并且为你的首页使用这个功能。你可以将”关于网页”设置为entry point或者设置为站点的末页。你可能执行一些更动态的步骤,设置一个自定义网页,显示最近的评论,文章,类别,存档。

时间参数

得到某个特别的时间段内发表的文章

  • 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”的排序参数。

联合参数

当我们出现多条件并置的时候我们就需要联合参数来,如当A和B条件同时出现时,我们用 &符号 将参数组合在一起。如:query_posts(‘cat=3&year=2004′);

让我们看看常用的逻辑运算符:

例子 名称 结果
$a and $b And(逻辑与) TRUE,如果 $a 与 $b 都为 TRUE
$a or $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE
$a xor $b Xor(逻辑异或) TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
! $a Not(逻辑非) TRUE,如果 $a 不为 TRUE
$a && $b And(逻辑与) TRUE,如果 $a 与 $b 都为 TRUE
$a || $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE

By 于湛 发布于 2013.05.9 3,044 次浏览

发表评论

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