wordpress 函数 get_posts()详解
以前写过一篇关于get_post()的函数,近来整理了一下文档,想把get_posts函数的给补上。
wordpress 的内置函数 get_posts 用来提取数据库中多篇指定文章或者是随机文章,今天研究了下,其使用的方法还不算是很麻烦,主要是解析其函数都有哪些方法,先看一下用法,代码如下:
< ?php $posts_array = get_posts( $args ); ?>
下面再看一下$args的参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | < ?php $args = array( //需要提取的文章数 "numberposts" => 10,//以第几篇文章为起始位置 "offset" => 0,//分类的ID,多个用逗号将分类编号隔开,或传递编号数组,可指定多个分类编号。 //大部分 CMS 使用该函数的重点。 "category" => ,//排序规则(注1) "orderby" => "post_date",//升序、降序 "ASC" —— 升序 (低到高) "DESC" —— 降序 (高到底) "order" => "DESC",//要显示文章的ID "include" => ,//要排除文章的ID "exclude" => ,//自定义字段名称 "meta_key" => , //自定义字段的值,配合上一个参数,来选择显示符合自定义字段数值的文章。 "meta_value" => ,//post(日志)——默认,page(页面), //attachment(附件),any —— (所有) "post_type" => "post",//文章的 mime 类型 "post_mime_type" => ,//要显示文章的父级 ID "post_parent" => ,//文章状态 "post_status" => "publish" ); ?> |
现在我们再来看它的用法:
最初到现在的文章列表
如果在博客首页上只设置显示一篇文章,但同时希望在分类ID 1中显示最近五篇文章的链接,可使用如下代码:
1 2 3 4 5 6 7 8 9 10 | <ul> < ?php global $post; $myposts = get_posts('numberposts=5&offset=1&category=1'); foreach($myposts as $post) : ?> <li><a href="<?php the_permalink(); ?>">< ?php the_title(); ?></a> </li> < ?php endforeach; ?> </ul> |
注意:使用offset时,以上查询仅适用于含有一篇以上文章的分类,否则无法输出。
获取所有文章资料
默认情况下get_posts无法获取一些文章相关数据,如通过 the_content()获取文章内容或序列ID。调用内部函数setup_postdata(),以$post 数组为其自变量,可以解决这一问题:
1 2 3 4 5 6 7 8 9 | < ?php $lastposts = get_posts('numberposts=3'); foreach($lastposts as $post) : setup_postdata($post); ?> <h2><a href="<?php the_permalink(); ?>" id="post-< ?php the_ID(); ?>"> < ?php the_title(); ?></a></h2> < ?php the_content(); ?> < ?php endforeach; ?> |
不希望通过调用setup_postdata()来获取文章的ID或内容,或者获取文章的任何相关数据时(数据存留在文章列表中),可以使用$post->COLUMN,COLUMN是文章数据表格的纵列名称。因此$post->ID指明文章ID,$post->post_content指明文章内容,以此类推。如要在页面上显示这些数据,请使用PHP echo命令,如下所示:
1 | < ?php echo $post->ID; ?> |
按标题为最新发表文章排序
以下代码可按字母升序显示最近发表的十篇文章的发布日期、标题和摘要:
1 2 3 4 5 6 7 8 9 10 11 12 | < ?php $postslist = get_posts('numberposts=10&order=ASC&orderby=title'); foreach ($postslist as $post) : setup_postdata($post); ?> <div> < ?php the_date(); ?> <br /> < ?php the_title(); ?> < ?php the_excerpt(); ?> </div> < ?php endforeach; ?> |
注意:排序参数在2.6版本中有所修改。此代码适用于新排序格式。详细内容参见参数。
任意文章
用MySQL RAND()函数指定排序参数的值,可以显示出随意选择的五篇文章:
1 2 3 4 5 6 7 8 9 10 | <ul><li><h2>A random selection of my writing</h2> <ul> < ?php $rand_posts = get_posts('numberposts=5&orderby=rand'); foreach( $rand_posts as $post ) : ?> <li><a href="<?php the_permalink(); ?>">< ?php the_title(); ?></a></li> < ?php endforeach; ?> </ul> </li></ul> |
显示所有附件
不用模板中任何循环进行本项操作。
(使用2.5版本后的get_children()函数相对方便。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | < ?php $args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => null, // any parent ); $attachments = get_posts($args); if ($attachments) { foreach ($attachments as $post) { setup_postdata($post); the_title(); the_attachment_link($post->ID, false); the_excerpt(); } } ?> |
显示最新文章的附件
在The_Loop ($post->ID可用)中进行本类操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | < ?php $args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID ); $attachments = get_posts($args); if ($attachments) { foreach ($attachments as $attachment) { echo apply_filters('the_title', $attachment->post_title); the_attachment_link($attachment->ID, false); } } ?> |
JavaScript 加var 关键字与不加var关键字的区别 wordpress 函数 query_posts()详解
[…] wordpress 函数 get_posts()详解 […]