本帖最後由 dxszzcylm 於 2009-1-31 23:40 編輯
' M& L; {0 g& |' M! Y! e# |0 ?# l4 f, o6 U! ^1 Z! r- d: j) j0 O6 X
2.避免在多循環中出現重複文章0 ?6 H8 I1 ~, Y+ l" m' Q- i9 E
: J6 t4 F. E1 G$ e6 T, A問題:由於「雜誌型」主題的流行,現在很多WordPressy用戶在他們的首頁上都使用了多個循環,因此他們也迫切需要在第二個循環上避免出現重複文章。 : n/ l! N; t0 s9 Y
解決方案:使用PHP數組就能輕鬆解決這一問題
% }! @3 x7 v* F創建一個PHP數組,並把第一個循環的所有文章ID放在其中8 d* i6 a3 Q3 j8 a3 O% \ ]+ {
<h2>Loop n°1</h2>
: s9 D: P& s. Z3 V<?php0 r4 \+ I: O4 h! m W- ?9 f% ]; t
$ids = array();
3 d8 ?2 W7 Q( g" k4 w& G# [/ b hwhile (have_posts()) : the_post();
, j$ ~, {, x1 P* m8 R: rthe_title();# C" b4 Z: `' M& y" w0 e
?>7 O6 r2 C' r9 B# h
<br />
. _3 m( Z0 A' @- s- Z' E* [<?php $ids[]= $post->ID;2 n: U& K5 O' u; a8 Z5 Q" R' Z4 Y
endwhile; ?>! n6 x" |. `; b* B* }" l! g
對於第二個循環:使用PHP函數in_array()來檢查$ids數組中是否包含了某個文章ID。如果這個文章ID沒有包含在此數組中,意味著第一個循環中沒有此篇文章,那麼系統就可以顯示它了。 + P/ F6 A2 Q8 c, Y4 k% l
<h2>Loop n°2</h2>( A. a3 i# o2 V. Z9 I* o& T( Q/ h
<?php3 G* o# n% d2 e% h+ Q0 a
query_posts("showposts=50");
+ c5 z' B& Q, Q7 r! |" P5 c S0 Bwhile (have_posts()) : the_post();
8 Y0 N" V/ y1 d6 q5 c# R. o; Fif (!in_array($post->ID, $ids)) {
" X. a$ E$ }. j* Tthe_title();?>
( a, p2 Q: Z9 K! A<br />( s6 ~3 N( b2 L( z# S4 b
<?php }
5 ]0 w. L. ]" [2 L- [3 ^$ ]* xendwhile; ?>6 _& u* R3 m* p+ x- f! f
4 m) C+ ~' [% ~/ h: Q
代碼說明:執行第一個循環時,其中的所有文章ID都會被放到一個數組變量中。因此,第二個循環執行時,我們只要到這個數組中檢查當前的文章ID是否已顯示在第一個循環中就可以了。 |
評分
-
查看全部評分
|