Query_posts語句是WordPress最實用的語句之一。 正是在query_posts的作用下,WordPress的Loop循環才能夠調用并顯示所有文章內容。 Query_posts的魅力在于,它可以根據你的要求,通過各種各樣的方式靈活地檢索并過濾日志或頁面。
你可以用query_posts進行簡單的文章抓取,可以只抓取一篇,也可以抓取上百篇。 而說到復雜點的用法,你甚至可以利用query_posts來查詢某一分類目錄下某個作者發表的、帶有某個標簽的特定數量文章….
WordPress中文手冊上有對query_posts函數的介紹,不過下面要介紹的是一些更詳細更有趣的用法。
1.注意事項
首先要注意的是,使用query_posts的最好方法….就是不要用它。 Query_posts中說到: query_posts函數僅用于修改主頁循環(Loop),而不是一種在頁面上生成次級循環的手段。如果你希望在主循環外另外生成循環,應該新建獨立的WP_Query對象,用這些對象生成循環。在主循環外的循環上使用query_posts會導致主循環運行偏差,并可能在頁面上顯示出你不希望看到的內容。
最恰當的方法是使用query查詢類。
<?php
$query = 'posts_per_page=10';
$queryObject = new WP_Query($query);
// The Loop...
if ($queryObject->have_posts())
{ while ($queryObject->have_posts())
{ $queryObject->the_post(); the_title(); the_content();
} } ?>
2. 不同調用方法
傳統的文章調用方法是以查詢字符串形式傳遞query_posts參數(如variable1=value1&variable2=value2&...),不過后來有了新方法——用數組來設置查詢參數。
<?php
// GOOD
// select 10 posts from category 1
$query = 'posts_per_page=10&cat=1';
$queryObject = new WP_Query($query);
// The Loop...
// BETTER
$query = array ( 'posts_per_page' => 10, 'cat' => 1 );
$queryObject = new WP_Query($query);
// The Loop...
?>當然,使用哪種方法完全由個人習慣決定,不過我認為用數組更為方便,原因如下:
便于閱讀
可以利用if語句更輕松地給數組添加條件,以動態生成查詢
一些查詢參數(某些使用頻率較低的參數,如分類參數和標簽參數)需要被傳遞數組
你可以將函數調用以參數的形式傳遞
3. 關于日志順序
默認情況下WordPress日志是按日期順序排列的,這也是大多數人的需求,不過如果能更改默認的排列順序那就更好了。 例如你可以隨意調用幾篇日志,讓它們顯示在側邊欄。 WordPress 2.9引入了以評論的數量多寡給文章排序的功能,這樣就可以更方便地向訪客顯示最受歡迎的文章….不過這里為了使用query_posts,我們假設一下不使用WordPress的這個功能。
<?php
// select posts ordered by comment_count
$query = 'orderby=comment_count';
$queryObject = new WP_Query($query);
// The Loop...
?>
4. Meta值
Post meta函數的實用性也很強, 我們可以利用下面的代碼來顯示最受歡迎的文章:
<?php
// grab posts by post count ordered in descending order
(most votes first)
$query = 'meta_key=vote_count&orderby=meta_value&order=DESC';
$queryObject = new WP_Query($query);
// The Loop...
?>
5. 日志? 頁面? 附件?
你可以按文章類型調用自己想要的日志、頁面或附件。 對附件的調用可能是最有趣但同時被使用頻率也是最低的一個。 利用下面的代碼(與上文中提到的順序參數),你就可以根據自己的喜好在網站上顯示各種媒體文件了:
<?php
// grab 1 random attachment
$query = 'post_type=attachment&orderby=rand&posts_per_page=1';
$queryObject = new WP_Query($query);
// The Loop...
?>
上一篇 php實現文章內容關鍵字增加內鏈
下一篇 友情鏈接無非是增加外鏈提高權重