(出處: wordpress-researcher.com)
query_posts是一個非常好用的調用文章函數,可以做到同頁面內顯示多種不同範圍的文章,可以抓出某分類、標籤、日期及作者都可以,甚至連自訂欄位的資料也可以拿來當時判斷範圍的條件資料。
首先 query_posts 的寫法通常是如以下這樣的結構,先定義查詢再加入文章迴圈程式碼後再重置查詢就差不多ok了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?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 – 除某分類內的文章,其他分類及子分類文章均顯示 (限輸入分類編號來識別)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?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(<a href="http://www.php.net/array">array</a>('category__and' => <a href="http://www.php.net/array">array</a>(2,6))); // 顯示分類編號為6的文章 (但不包括子分類文章) query_posts(<a href="http://www.php.net/array">array</a>('category__in' => <a href="http://www.php.net/array">array</a>(6))); // 除了分類編號為2及6的文章,子分類及其他分類文章都顯示 query_posts(<a href="http://www.php.net/array">array</a>('category__not_in' => <a href="http://www.php.net/array">array</a>(2,6))); ?> |
使用query_posts控制文章排序方式
(出處: sjyhome)
orderby=date?按发布日期排序
orderby=modified 按修改时间排序
orderby=ID 按文章ID排序
orderby=comment_count 按评论最多排序
orderby=title 按标题排序
orderby=rand 随机排序
目前我使用的code:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<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> |