当前位置: 首页 > 网络 > 正文

wordpress根据条件获取文章列表函数:get_posts()

编辑:梦小悠   发布:2015-03-15 23:52   分类:网络   阅读:1,540   评论:0  
摘要: get_posts,这是一个用于创建多环路的简单标签。用于检索最新的或者匹配条件的文章列表。 注意,虽然参数与get_pages方法类似,但是有几个参数略有不同。

【说明】
这是一个用于创建多环路的简单标签。用于检索最新的或者匹配条件的文章列表。
注意,虽然参数与get_pages方法类似,但是有几个参数略有不同。

【用法】

<?php $posts_array = get_posts( $args ); ?> 

默认情况下的用法

<?php
 $args = array( 
'numberposts' => 5, 
'offset' => 0, 
'category' => , 
'orderby' => 'post_date', 
'order' => 'DESC', 
'include' => , 
'exclude' => , 
'meta_key' => , 
'meta_value' => , 
'post_type' => 'post', 
'post_mime_type' => , 
'post_parent' => , 
'post_status' => 'publish' 
); 
$posts_array = get_posts( $args ); ?> 

【示例应用】
获取最初到现在的文章列表
如果在博客首页上只设置显示一篇文章,但同时希望在分类ID 1中显示最近五篇文章的链接,可使用如下代码:

<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 数组为其自变量,可以解决这一问题:

<?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命令,如下所示:

<?php echo $post->ID; ?> 

按标题为最新发表文章排序
以下代码可按字母升序显示最近发表的十篇文章的发布日期、标题和摘要:

<?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()函数指定排序参数的值,可以显示出随意选择的五篇文章:

<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()函数相对方便。)

<?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); 
} 
} 
?> 

【上一篇】
【下一篇】

暂时还有没有评论!

发表评论


快捷键:Ctrl+Enter

西瓜