更新日期:2014-08-16

get_posts 函數用於抓取多篇指定、某分類或隨機的文章。

語法:
[php]
$args = array(
‘posts_per_page’ => 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’,
‘suppress_filters’ => true );
$posts_array = get_posts( $args );
[/php]

說明一下幾個常用的項目,

posts_per_page 是每頁顯示多少篇文章,如果換成 numberposts 就是取出幾篇文章就好。
offset 是從第幾篇開始顯示,0表示第一篇。
orderby 是依照哪個條件(欄位)排序。
include 是指定哪些文章id。
exclude 是排除哪些文章id。
post_type 是取哪些類型,post 就是文章。
post_status 是文章發佈狀態,publish 為已發佈。

這樣子的 $posts_array 返回值是 objects,做迴圈就可以一一將標題、內容、發文時間等等顯示出來了。

舉例用法:
[php]
$args = array(
‘numberposts’ => 5, // 取5篇
‘category’ => 1, // 分類編號為1
‘orderby’ => ‘post_date’, // 依照發文時間排序
‘order’ => ‘DESC’, // 由新到舊排序
‘post_type’ => ‘post’, // 取類型是文章
‘post_status’ => ‘publish’ // 已經發表的文章
);
$postslist = get_posts( $args );
foreach ( $postslist as $post ){
setup_postdata( $post ); // 利用 setup_postdata 把我們的查詢放入 $post
echo ‘<div>’;
if ( has_post_thumbnail() ) the_post_thumbnail();
echo ‘<a href="’ . get_permalink() . ‘">’ . get_the_title() . ‘</a></div>’;
}
wp_reset_postdata(); // 重置 setup_postdata()
[/php]

官方說明:
http://codex.wordpress.org/Template_Tags/get_posts