本帖最後由 dxszzcylm 於 2009-1-31 23:40 編輯
" ~1 Z" a& u$ n7 v
& |5 N3 ~9 g: z8 Z% q9 q2.避免在多循環中出現重複文章
( M, b8 U) C. {, b$ }* l! d' `. h1 [
問題:由於「雜誌型」主題的流行,現在很多WordPressy用戶在他們的首頁上都使用了多個循環,因此他們也迫切需要在第二個循環上避免出現重複文章。
$ x$ y! z5 \9 Y) Z+ O1 u' g$ U解決方案:使用PHP數組就能輕鬆解決這一問題6 k7 F; O% Q0 l" @- V
創建一個PHP數組,並把第一個循環的所有文章ID放在其中
$ }* i* P+ i# I<h2>Loop n°1</h2>3 N% B' I0 R2 `' F/ b
<?php
# `' W% `% ]0 h& r$ids = array();# J2 c+ I. K! \- f$ w' Y
while (have_posts()) : the_post();2 A: _- z7 t5 `3 Y
the_title();
8 R6 o) E1 u3 U0 b?>6 T( z& v* n' U# p& |& m V1 l
<br />9 j j) w6 [4 w1 o+ Q }
<?php $ids[]= $post->ID;
7 a" K2 k- [0 Q8 v I8 W: f* yendwhile; ?>) D8 v. u! c' G
對於第二個循環:使用PHP函數in_array()來檢查$ids數組中是否包含了某個文章ID。如果這個文章ID沒有包含在此數組中,意味著第一個循環中沒有此篇文章,那麼系統就可以顯示它了。
/ [/ `0 m8 `' |. H<h2>Loop n°2</h2>
7 K( v/ @/ F9 T: H; s" {<?php
- {9 ]# v" m5 _- K4 [# M ^query_posts("showposts=50");
7 ^8 \" g2 I L; |while (have_posts()) : the_post();
5 z& F1 [. H, z5 k2 P- nif (!in_array($post->ID, $ids)) {% ]" o& V9 r* s# l' q' }
the_title();?>
+ ^8 M9 a0 ?: ?2 @' a6 }; t<br /># \" p& k9 v3 @6 ] S
<?php }# R1 q6 Y W. a) \
endwhile; ?>
: T p, J: k/ i5 c8 j
+ G' F% L1 a0 I1 u代碼說明:執行第一個循環時,其中的所有文章ID都會被放到一個數組變量中。因此,第二個循環執行時,我們只要到這個數組中檢查當前的文章ID是否已顯示在第一個循環中就可以了。 |
評分
-
查看全部評分
|