似乎有利用其內置的功能,是從WordPress的輸出內容的三種主要方式與WP_Query
被推薦之一:什麼是創建自己的Wordpress循環的最佳方法?
什麼他們之間的區別? (我明白WP_Query
是這個類,而另外兩個是方法)。
什麼是在同一頁面上有多個循環的最乾淨的方法,而不會相互干擾?
我正在尋找你如何編程你的WP循環的例子; 例如輸出按類別2名獨立的名單後,帶附件,元數據等
這是我迄今發現的最好參考:
似乎有利用其內置的功能,是從WordPress的輸出內容的三種主要方式與WP_Query
被推薦之一:什麼是創建自己的Wordpress循環的最佳方法?
什麼他們之間的區別? (我明白WP_Query
是這個類,而另外兩個是方法)。
什麼是在同一頁面上有多個循環的最乾淨的方法,而不會相互干擾?
我正在尋找你如何編程你的WP循環的例子; 例如輸出按類別2名獨立的名單後,帶附件,元數據等
這是我迄今發現的最好參考:
我已經使用WP_Query和get_posts。在我的側欄模板之一中,我使用以下循環來顯示來自特定類別的帖子,方法是使用包含類別slug或類別名稱的'category_to_load'鍵的自定義字段。真正的區別來自兩種方法的實施。
的get_posts方法看起來像這樣在我的一些模板:
凡WP_Query實施看起來是這樣的:
$blog_posts = new WP_Query('showposts=15');
while ($blog_posts->have_posts()) : $blog_posts->the_post(); ?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>" class="blog_post">
<div class="title">
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<span class="date"><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></span>
</div>
<div class="entry">
<?php the_content(); ?>
</div>
<p class="postmetadata"><?php the_tags('Tags: ', ', ', '<br />'); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?> <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>
</div>
<?php endwhile; ?>
的主要區別是,你不必重新設置全局$ post變量,而且當您使用WP_query時,您也不必通過在每個後期對象上調用setup_postdata($ post)來設置發佈數據。您還可以使用WP_Query函數上可愛的have_posts()函數,該函數不能使用get_posts()。
除非您真的想要,否則不應該使用query_posts()函數,因爲它會修改頁面的主循環。請參閱docs。所以如果你正在構建一個特殊的頁面來顯示你的博客,那麼調用query_posts可能會弄亂頁面的循環,所以你應該使用WP_Query。
這只是我的兩美分。我的最終建議是,你的首選應該是WP_Query。
-Chris
從WP文檔的get_posts:
get_posts()也可以接受query_posts()可以使用的參數,因爲這兩個函數現在都在內部使用相同的數據庫查詢代碼。
兩個功能之間的唯一區別是,get_posts返回與交記錄數組,而query_posts由模板函數(has_posts,the_post等)存儲在檢索查詢對象的記錄。
它們都使用WP_Query對象來執行查詢。
創建第二個循環包含在Wordpress docs中。有一些鏈接可用於多個循環的其他示例。你會注意到每個人都有不同的表現,但他們對他們的結果都很滿意。
WP用來主循環稱爲$wp_query
的對象。我們平時看不到此對象,因爲它的背後隱藏着have_posts()
和the_post()
如果你想修改你的循環之前應使用query_posts()
主循環僅用於 $wp_query->have_posts()
和$wp_query->the_post()
包裝。
如果您想要另一個循環,您可以在新循環之前使用query_posts()
重新使用$wp_query
對象。如果需要,這可以做很多次。
如果由於某種原因,您需要保留$ wp_query對象,那麼應該使用WP_Query
。當然,因爲have_posts()
和the_post()
是$wp_query
對象的包裝,所以不能在WP_Query
中使用它們。你還是使用$your_query_obj->have_posts()
即
$sidebar= WP_Query('category_name= sidebar');
while($sidebar->have_posts()): $sidebar->the_post();
the_title();
the_content();
endwhile;
一個很好的情況下WP_Query
能比query_posts()
更好的是左側邊欄。 由於側邊欄的代碼循環可能會放在主循環的頂部,因此query_posts()
調用將更改$wp_query
對象並更改主循環。在這種情況下,在側邊欄代碼中使用query_posts()
,您還需要在主循環前使用query_posts()
來查詢該循環的正確內容。
因此,在這種情況下使用WP_Query將保持$ wp_query,因此主循環不變。
但同樣,爲了一個共同的情況query_posts()
是查詢您的內容一個美麗的方式:
query_posts('category_name=blog');
while(have_posts()): the_post();
the_title();
the_content();
endwhile;
你將如何訪問後的孩子(附件,修訂等)。這是一個單獨的查詢嗎? – meleyal 2009-02-23 15:46:25