本帖最後由 dxszzcylm 於 2009-1-31 23:40 編輯
( d+ r9 ^: i! U) a9 K. x
- L- ?+ d1 J# K$ Q4 L2.避免在多循環中出現重複文章
0 O+ ?4 \$ S. n+ a6 V$ p9 Y) R3 P! i$ T1 a8 x) }, x9 [
問題:由於「雜誌型」主題的流行,現在很多WordPressy用戶在他們的首頁上都使用了多個循環,因此他們也迫切需要在第二個循環上避免出現重複文章。
6 @+ B: E8 I R; b& T解決方案:使用PHP數組就能輕鬆解決這一問題
: }( |5 ^0 r: ?% ~6 p! ~5 W創建一個PHP數組,並把第一個循環的所有文章ID放在其中. L0 g; n, Q1 J) w' t- T
<h2>Loop n°1</h2>
1 m+ O' f3 h4 ^7 P- R' a+ N) T" k! @<?php
: H' ?9 G6 Q* O( ~2 z$ids = array();
3 x+ }5 t' G& K* ^# wwhile (have_posts()) : the_post();
% m, A5 M1 T: D; @" p1 Fthe_title();
; G2 d: l& x7 r I: _4 [6 y?>8 v ]2 H% ~8 K# Z& P
<br />
# d P1 M# T( D! G: u/ p<?php $ids[]= $post->ID;
( `+ p" e! O5 l. J6 hendwhile; ?>
: T3 Z3 C: V7 w對於第二個循環:使用PHP函數in_array()來檢查$ids數組中是否包含了某個文章ID。如果這個文章ID沒有包含在此數組中,意味著第一個循環中沒有此篇文章,那麼系統就可以顯示它了。 + \! l9 b4 c. o' R4 k1 c) D6 c
<h2>Loop n°2</h2>
5 Y' D' K' W/ `- ?6 f) e<?php
+ k& x/ k, U# ~; Tquery_posts("showposts=50");
2 _0 Z y, _8 d) h, ^while (have_posts()) : the_post();
$ N. h8 e$ }) {8 bif (!in_array($post->ID, $ids)) {' y( M" C; w: o# S$ ?
the_title();?>+ _& O! r# @& |9 P: _ a
<br />% G) r7 k( N3 R7 U
<?php }* O% V9 d1 U. |2 v6 k" l
endwhile; ?>
- T A6 l0 T8 `; r9 L2 g8 z! m) z! d6 X9 Y9 S6 W
代碼說明:執行第一個循環時,其中的所有文章ID都會被放到一個數組變量中。因此,第二個循環執行時,我們只要到這個數組中檢查當前的文章ID是否已顯示在第一個循環中就可以了。 |
評分
-
查看全部評分
|