WordPress:Template Tags/get posts
描述[ ]
这是一个简单的标签,是用来创建多个loops。
用法[ ]
%%% <?php get_posts('arguments'); ?> %%%
例子[ ]
拥有offset的文章列表[ ]
如果你设置你的博客,在首页只显示一篇文章,但是同时想要在首页列上链接,连接到类别ID1中先前写的五篇文章上,你可以使用这个:
<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 array,可以解决这个问题。
<?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=post_title'); foreach ($postslist as $post) : setup_postdata($post); ?> <div> <?php the_date(); ?> <br /> <?php the_title(); ?> <?php the_excerpt(); ?> </div> <?php endforeach; ?>
任意挑选的文章[ ]
使用MySQL RAND()函数,根据参数值的顺序,显示五篇任意选择的文章列表。 <ul><li><h2>任意选择我所写的文章</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>
显示所有的配置[ ]
在你的模板中任何的Loops之外,执行这个步骤。
<?php $args = array( 'post_type' => 'attachment', 'numberposts' => null, '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内执行这个步骤(Loop内拥有$post->ID)。
<?php $args = array( 'post_type' => 'attachment', 'numberposts' => null, '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); } } ?>