<?php query_posts("cat")?>,query_posts()函数 (wordpress日志调用)

我们在修改和自己创新wordpress模板的时候,经常会遇到while(has_post()):the_post()的循环,例如首页,我们几乎不能忘记这循环的重要意义,即这是出现文章及其各个属性的唯一充要条件。不过,我们使用这种文章的循环的时候,应该想到,主页里显示了最新文章,分类页显示了该分类的最新文章,内容页只显示该文章。那么我想在这些页面不按规则出牌,调用其他文章怎么办?query_post()帮我们完成这一想法。网上关于它的用法的文章有很多,但都只针对一方面,本文稍详细的讲解其用法。

query_post顾名思义即查询调用对应条件的文章,其参数即我们需要的条件,这些条件可以是分类、文章ID或title、排序方式等等。具体用法如下:

query_posts('showposts=5&caller_get_posts=1');

while (have_posts()) : the_post();

echo '

';the_title();echo '';

endwhile;

wp_reset_query();

上面这段代码即为本站调用5篇最新文章的代码。第一行的意思是执行查询最新的五篇文章,并且不管置顶文章,只管按发表时间的新老输出。第二行开始是我们熟悉的文章的循环,和我们熟悉的输出没有任何区别,最后一行是重置上面的查询,主要为了防止在按随即调用输出时造成这段代码后面的文章输出,最好是每次都用上。

接下来详细讲一下query_post()的参数:

wp_query会忽视通过URL接收到的其它的参数,如果想不忽略,可以在调用中使用$query_string。

$query_string=$_GET['p'];//或你其他想要的形式,一般是分类或标签

query_posts($query_string . "&order=ASC")

设置文章显示的顺序,但是不干扰其余的查询字符串,参数前须有“&”符号

主页不显示某一分类下的日志

if (is_home()) {

query_posts("cat=-3");

}

获得特定的日志

query_posts('p=5');

获得特定的页面

query_posts('page_id=7');????? //只返回单独页面7

?>

query_posts('pagename=about'); //只返回《关于》网页

?>

query_posts('pagename=parent/child'); // 返回母网页的子网页

?>

创建所有文章列表,并且提供分页功能

query_posts($query_string.'posts_per_page=-1');

while(have_posts()) { the_post();

put your loop here ;

}

?>

类别参数

显示属于某个类别的文章

cat

category_name

根据ID显示一个类别

只显示来自一个类别ID的文章

query_posts('cat=4');

根据名称显示一个类别

只显示属于某个类别名的文章

query_posts('category_name=Staff Home');

显示几个类别及ID

显示属于几个类别ID的文章

query_posts('cat=2,6,17,38');

删除某个类别的文章

显示所有的文章,但是类别ID前面有个’-'(负号)负号的类被除外。

query_posts('cat=-3');

删除属于类别3的所有文章。有一个限制性条款:会删除只属于类别3的所有文章。如果一个类别也同时属于其它的类别,这个类别仍然不会被删除。

标签参数

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

tag

为某个标签提取文章

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

联合参数

你可能从上面的例子中注意到,你使用一个&(&符号)将参数组合在一起,像:

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’能够产生期待的结果。

通过上面的学习,我们就可以用query_post()来实现很多调用了,只需要用文章最开头给出的那段代码和后面的参数,你可以完美的调用自己想要的文章列表,例如属于某几个分类的含有某标签的最新5篇文章并按发表时间降序排列、随机调用10篇文章(如本站每篇文章都有随机推荐文章)等等文章调用。当然你还可以发挥自己的想象,充分利用php的结构化程序特点,在不同的页面调用不同的文章,如用is_paged()判断是否为分页面,然后如果分页的话调用几篇同类目下的文章等等。

好了,关于query_post()的介绍就到这里,希望对你有用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值