站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
▼
建站程序
开发
服务器
办公软件
开发教程
▼
服务器教程
软件使用教程
运营教程
热门电子书
▼
CSS教程
WordPress教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
热点词条
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
WordPress:Template Tags/query posts
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
==描述== <tt>Query_posts</tt>可以用来控制在[[WordPress:The Loop|The Loop]]上显示哪篇文章,接受你的URL上使用的同样格式的不同的参数。(例如<tt>p=4</tt>值显示ID为4的文章) 为什么要经过这麽多的麻烦,更改为给定的URL而创建的查询?你可以自定义博客文章的外观,将文章与网页logic联合起来(像[[WordPress:Conditional Tags|条件式标签]]—没有更改任何的URLs。 一般的使用情况可能是: *只显示一篇文章或者你的主页网页。 *显示一个特殊时间段的所有文章。 *在首页上(只)显示最近的文章。 *更改文章的排列次序。 *只显示来自一个类别中的文章。 ==用法== 在[[WordPress:The Loop|The Loop]]开始之前,在你的一个[[WordPress:Templates|模板]]文件上的<tt>query_posts()</tt>上放置一个call。<tt>wp_query</tt> object会产生一个新的使用你的参数的SQL查询。当你执行这一步的时候,WordPress忽视了通过URL接收到的其它的参数(例如网页号或者类别)。如果你想保存这些参数,你可以在访问<tt>query_posts()</tt>时,使用变数<tt>$query_string</tt>。 例如,设置文章显示的顺序,但是不干扰其余的查询字符串,你可以将下面的内容放在[[WordPress:The Loop|The Loop]]之前: <tt>query_posts($query_string . "&order=ASC")</tt> 以这种方式使用<tt>query_posts</tt>的时候,参数的引用部分''必须''以一个&号开始。 ==例子== ===从你的主页上删除类别=== 将这个代码放到你的<tt>index.php</tt>文件上会导致你的主页显示所有类别的文章''但是''类别ID3的文章除外。 <pre> <?php if (is_home()) { query_posts("cat=-3"); } ?> </pre> 你可以在已经删除的类别的列表上再添加几个类别(在WP2.1.2上测试了): <pre> <?php if (is_home()) { query_posts("cat=-1,-2,-3"); } ?> </pre> ===重新得到一篇特别的文章=== 想要重新得到一篇特别的文章,你可以使用以下: <pre> <?php // 重新得到ID为5的文章 query_posts('p=5'); ?> </pre> 如果你想对这个查询使用''阅读更多的''功能,你需要将全局$更多的变量设置为0。 <pre> <?php // retrieve one post with an ID of 5 query_posts('p=5'); global $more; // set $more to 0 in order to only get the first part of the post $more = 0; // the Loop while (have_posts()) : the_post(); // the content of the post the_content('Read the full post »'); endwhile; ?> </pre> ===返回一个特别的网页=== 你可以使用以下的内容,返回一个特别的网页: <pre> <?php query_posts('page_id=7'); //只返回网页7 ?> </pre> or <pre> <?php query_posts('pagename=about'); //只返回关于网页 ?> </pre> 对于子网页,需要母网页和子网页的slug,用一个斜线分开。例如: <pre> <?php query_posts('pagename=parent/child'); // 返回母网页的子网页 ?> </pre> ===将变数传给query_posts=== 根据你的需要,你可以使用两种方法将一个变数传给查询。如其它的例子那样,将这些放置到你的Loop的上面: ==== 例 1 ==== 在这个例子中,我们连接查询之后,再运行查询。首先分配了变量,然后再连接,然后再运行。在这个例子中,我们从其它地方进入了一个类别变量。 <pre> <?php $categoryvariable=$cat; // 指派变数作为当前的类别 $query= 'cat=' . $categoryvariable. '&orderby=date&order=ASC'; // concatenate the query query_posts($query); // 运行查询 ?> </pre> ==== 例 2 ==== 在下面的这个例子中,双" 引号 "指示PHP将enclosed看做一个表述。在这个例子中,我们得到当前的年份和月份,而且通知query文章给我们提供当前年/月的文章,而且在这种情况下,将这些文章按升序排列,这样我们可以在网页的顶上方,得到最早所写的文章。 <pre> <?php $current_month = date('m'); ?> <?php $current_year = date('Y'); ?> <?php query_posts("cat=22&year=$current_year&monthnum=$current_month&order=ASC"); ?> <!-- put your loop here --> </pre> ==== 例 3 ==== 这个例子演示了怎样创建所有的文章的列表,并且标记页数。我们可以使用默认的''$query_string'',这个字符串通知查询文章给我们提供全部文章的列表。我们也可以将''posts_per_page''查询参数从-1改为我们希望在每个网页上显示的文章的数目;在最后一种情况中,你可能想要使用[[WordPress:Template Tags/posts_nav_link|posts_nav_link()]]导航到创建的归档中。 . <pre> <?php query_posts($query_string.'posts_per_page=-1'); while(have_posts()) { the_post(); <!-- put your loop here --> } ?> </pre> ==参数== 这还不是一个详尽的列表,意思是设置你自己的queries,可以显示一些更常见的内容。 ===类别 参数=== 显示属于某个类别的文章。 * <tt>cat</tt> * <tt>category_name</tt> '''根据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的所有文章。如果一个类别也同时属于其它的类别,这个类别仍然不会被删除。 ===标签参数=== 显示与某个标签相关的文章。 * <tt>标签</tt> '''为某个标签提取文章''' query_posts('标签=cooking'); '''提取拥有任何这样的标签的文章''' query_posts('tag=bread,baking'); '''提取拥有这三个标签的文章: query_posts('tag=bread+baking+recipe'); 也看看[http://boren.nu/archives/2007/10/01/taxonomy-intersections-and-unions/ Ryan's discussion of Tag intersections and unions] ===作者参数=== 你也可以根据作者限制文章数目。 * <tt>author_name=Harriet</tt> * <tt>author=3</tt> <tt>author_name</tt> operates on the <tt>user_nicename</tt> field, whilst <tt>author</tt> operates on the author id. ===文章 & 网页参数=== 返回一篇单独的文章或者一个单独的网页。 * <tt>p=1</tt> - 使用文章 ID来显示第一篇文章 * <tt>name=first-post</tt> - 使用 [[WordPress:Introduction to Blogging#Post Slugs|文章 Slug]] 显示第一篇文章 * <tt>page_id=7</tt> * <tt>pagename=about</tt> * <tt>showposts=1</tt> (你可以使用 <tt>显示文章=3</tt>,或者其它的任何数字显示一定数目的文章 由于 [[WordPress:Template Hierarchy|模板层级]]方面的原因, home.php先执行了。这意味这你可以编写一个home.php,home.php调用<tt>query_posts()</tt>重新得到一个特别的网页并且将那个网页设置为你的首页。没有任何插件或者hacks,你需要运行一个机制,并且显示和维护一个非博客的首页。 更有用的方法,可能是利用WP的[[WordPress:Pages|网页]]功能并且为你的首页使用这个功能。你可以将"关于网页"设置为entry point或者设置为站点的末页。你可能执行一些更动态的步骤,设置一个自定义网页,显示最近的评论,文章,类别,存档。请看看下面的例子。 ===时间参数=== 得到某个特别的时间段内发表的文章。 * <tt>hour=</tt> * <tt>minute=</tt> * <tt>second=</tt> * <tt>day=</tt> - 一个月中的每一天; 显示,例如,十五号发表的所有文章。 * <tt>monthnum=</tt> * <tt>year=</tt> ===网页参数=== * <tt>paged=2</tt> -显示使用"以前发表的文章"链接时,通常在网页2上显示的文章。 * <tt>posts_per_page=10</tt> - 每个网页显示的文章数目;-1这个值,会显示所有的文章。 * <tt>order=ASC</tt> - 按时间顺序显示文章,以相反的顺序显示DESC(默认) ===Offset 参数=== 你不能''转移''或者忽视一个或者更多的原始文章,这些文章一般是你的query同时使用offset参数收集到的。 下面的函数会显示(1)最近的5篇文章: query_posts('showposts=5&offset=1'); ===根据参数排序=== 根据这个区给得到的文章排序。 * <tt>orderby=author</tt> * <tt>orderby=date</tt> * <tt>orderby=category</tt> * <tt>orderby=title</tt> * <tt>orderby=modified</tt> * <tt>orderby=modified</tt> * <tt>orderby=menu_order</tt> * <tt>orderby=parent</tt> * <tt>orderby=ID</tt> * <tt>orderby=rand</tt> 同时考虑"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阻止这个运行。请看看[http://trac.wordpress.org/ticket/5433 Ticket #5433],一个工作区要搜索几个使用+的标签 query_posts('cat=1&tag=apples+apples'); 对于先前的查询,这个会产生期待的结果。注意使用'cat=1&tag=apples+oranges'能够产生期待的结果。 ==资源== * [http://www.ifelse.co.uk/archives/2005/04/08/query_posts-redux/ If..Else - Query Post Redux] * [http://www.ifelse.co.uk/archives/2005/04/10/make-wp-show-only-one-post-on-the-front-page/ If..Else –使得 WordPress 在首页上只显示一篇文章] * [http://www.ifelse.co.uk/archives/2005/03/31/query_posts/ If..Else - Query 文章] *[http://www.gepsojur.org/wordpress/ Query posts article by Marlon Leite at Gepsojur] *[http://www.nietoperzka.com/wptraining/custom-order-of-posts-on-main-page/ nietoperzka的主页上文章的自定义顺序] <!—我们需要关于这篇文章的其它资源--> ==相关的== {{标签总标签}} {{标签 页底文字}} {{Stub}}
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:Stub
(
编辑
)
模板:标签 页底文字
(
编辑
)
模板:标签总标签
(
编辑
)