用WP_Query自定義WordPress主迴圈

ytkahcom發表於2014-01-02

我們知道操作 WordPress 主迴圈(WordPress Loop)最容易的方法是使用 query_posts 函式。

但是使用 query_posts 直接修改 WordPress 預設的主迴圈,會有以下的問題:

    會干擾那些用到了 WordPress 迴圈的外掛。
    可能使一些 WordPress 條件判斷函式失效。
    需要去處理重新設定,回滾和偏移等問題。

 

使用 WP_Query 自定義 WordPress Loop

所以最好是使用 WP_Query,並建立自己的 WordPress 迴圈。

使用 WP_Query 第一步是建立你自己的變數,比如我們要建立一個最新日誌列表,就可以使用下面的程式碼:

<?php
    $recentPosts = new WP_Query();
    $recentPosts->query(`showposts=5`);
?>

上面程式碼定義了一個叫做 recentPosts 的變數,它是一 WP_Query 類的一個例項。然後我使用了 WP_Query 的一個方法開始一個查詢,我們可以使用和 query_posts 函式一樣的引數。現在就可以開始我們自己的迴圈了:

<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
   <!– do some stuff here –>
<?php endwhile; ?>

上面我們用了 WP_Query 的兩個方法,分別是 have_posts 和 the_post。你可以從這篇文章全域性變數和 WordPress 主迴圈瞭解更多關於這兩個函式。

這樣做的好處是在迴圈中,我們可以使用標準的 post 模板函式。比如下面是使用自定義的 Loop 先是最新5篇文章的完整程式碼:

<h 3>最新日誌</h3>
<ul>
<?php
    $recentPosts = new WP_Query();
    $recentPosts->query(`showposts=5`);
?>
<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
    <li><a href=”<?php the_permalink() ?>” rel=”bookmark”><?php the_title(); ?></a></li>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
</ul>

簡單總結
使用 WP_Query 自定義 WordPress 迴圈是不干擾預設的 WordPress 主迴圈,而自定義查詢的一種最簡單最好方法。所以我們還能一個頁面同時執行完全獨 WordPress 迴圈。

原文:我愛水煮魚http://blog.wpjam.com/article/define-wordpress-loop-using-wp_query/


相關文章