WordPress 用query_posts列出特定範圍文章

(出處: wordpress-researcher.com)
query_posts是一個非常好用的調用文章函數,可以做到同頁面內顯示多種不同範圍的文章,可以抓出某分類、標籤、日期及作者都可以,甚至連自訂欄位的資料也可以拿來當時判斷範圍的條件資料。

首先 query_posts 的寫法通常是如以下這樣的結構,先定義查詢再加入文章迴圈程式碼後再重置查詢就差不多ok了。

 
<?php
//定義要顯示的文章範圍查詢
query_posts('posts_per_page=5');
//文章迴圈
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
<!-- 這邊是當判斷符合時列出的文章清單,你可以用< ?php the_xxx(); >系列來顯示相關的文章資訊 -->
<?php
endwhile; else:
?>
<!-- 這邊是顯示抓無資料時要跑出來的錯誤訊息 -->
<?php
endif;
//重置查詢(這是為了避免之後的查詢資料因為上面這段查詢而混亂掉)
wp_reset_query();
?>

再來是說明在query_posts裡可以輸入哪些參數來顯示出自己想要的文章範圍。

Category Parameters(文章分類參數)

  • cat – 輸入分類編號來顯示出該分類內的文章
  • category_name – 輸入分類名稱來顯示出該分類內的文章
  • category__and – 顯示同時被列入多個分類的文章 (限輸入分類編號來識別)
  • category__in – 顯示該分類內的文章,但不包括子分類內的文章 (限輸入分類編號來識別)
  • category__not_in – 除某分類內的文章,其他分類及子分類文章均顯示 (限輸入分類編號來識別)
<?php
// 僅顯示分類編號為4的文章 (包括子分類文章)
query_posts('cat=4');
// 僅顯示分類名稱為Codex的文章 (包括子分類文章)
query_posts('category_name=Codex');
// 顯示多個分類內的文章 (包括各子分類文章)
query_posts('cat=2,6,17,38');
// 除了分類編號為3的文章 (包括子分類文章),其他文章都顯示
query_posts('cat=-3');
// 顯示同時有分類編號為2及6的文章
query_posts(array('category__and' => array(2,6)));
// 顯示分類編號為6的文章  (但不包括子分類文章)
query_posts(array('category__in' => array(6)));
// 除了分類編號為2及6的文章,子分類及其他分類文章都顯示
query_posts(array('category__not_in' => array(2,6)));
?>

使用query_posts控制文章排序方式

(出處: sjyhome)
orderby=date?按发布日期排序
orderby=modified 按修改时间排序
orderby=ID 按文章ID排序
orderby=comment_count 按评论最多排序
orderby=title 按标题排序
orderby=rand 随机排序

目前我使用的code:

<ul>
<?php
query_posts('category_name=touchgreen&orderby=ID');
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
 
<li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
 
<?php
endwhile; 
wp_reset_query();
?>
</ul>

發表迴響