最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
wordpress中 get_posts() 函数用法详解
时间:2022-06-25 18:37:44 编辑:袖梨 来源:一聚教程网
wordpress 的内置函数 get_posts 用来提取数据库中多篇指定文章或者是随机文章,今天研究了下,其使用的方法还不算是很麻烦,主要是解析其函数都有哪些方法,先看一下用法,代码如下:
< ?php $posts_array = get_posts( $args ); ?>
下面再看一下$args的参数:
< ?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中显示最近五篇文章的链接,可使用如下代码:
- < ?php the_title(); ?>
< ?php
global $post;
$myposts = get_posts('numberposts=5&offset=1&category=1');
foreach($myposts as $post) :
?>
< ?php endforeach; ?>
注意:使用offset时,以上查询仅适用于含有一篇以上文章的分类,否则无法输出。
获取所有文章资料
默认情况下get_posts无法获取一些文章相关数据,如通过 the_content()获取文章内容或序列ID。调用内部函数setup_postdata(),以$post 数组为其自变量,可以解决这一问题:
< ?php
$lastposts = get_posts('numberposts=3');
foreach($lastposts as $post) :
setup_postdata($post);
?>
< ?php the_title(); ?>
< ?php the_content(); ?>
< ?php endforeach; ?>
不希望通过调用setup_postdata()来获取文章的ID或内容,或者获取文章的任何相关数据时(数据存留在文章列表中),可以使用$post->COLUMN,COLUMN是文章数据表格的纵列名称。因此$post->ID指明文章ID,$post->post_content指明文章内容,以此类推。如要在页面上显示这些数据,请使用PHP echo命令,如下所示:
< ?php echo $post->ID; ?>
按标题为最新发表文章排序
以下代码可按字母升序显示最近发表的十篇文章的发布日期、标题和摘要:
< ?php
$postslist = get_posts('numberposts=10&order=ASC&orderby=title');
foreach ($postslist as $post) :
setup_postdata($post);
?>
< ?php the_date(); ?>
< ?php the_title(); ?>
< ?php the_excerpt(); ?>
< ?php endforeach; ?>
注意:排序参数在2.6版本中有所修改。此代码适用于新排序格式。详细内容参见参数。
任意文章
用MySQL RAND()函数指定排序参数的值,可以显示出随意选择的五篇文章:
A random selection of my writing
- < ?php the_title(); ?>
< ?php
$rand_posts = get_posts('numberposts=5&orderby=rand');
foreach( $rand_posts as $post ) :
?>
< ?php endforeach; ?>
显示所有附件
不用模板中任何循环进行本项操作。
(使用2.5版本后的get_children()函数相对方便。)
< ?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可用)中进行本类操作。
< ?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);
}
}
?>
相关文章
- 人们熟悉的寄居蟹属于以下哪种分类 神奇海洋11月21日答案 11-21
- 第五人格11.22共研服有什么更新 11月22日共研服更新内容介绍 11-21
- 原神恰斯卡怎么培养 11-21
- 无期迷途四星装束是谁 11-21
- 王者荣耀帝丹高中校服怎么获得 11-21
- 光遇姆明季后续版本怎么玩 11-21