本代碼參考了網上的代碼然後組合而成,之前花了幾小時測試的,隨機是真正的隨機,不會出現某些代碼id連續的問題,在我一個80w+文章的wp站測試過,我測試過N多隨機代碼,這個是占資源最少的了,有興趣的朋友可以研究更新一下,對有大數據網站又想用隨機文章的朋友或者有用。- <ul>
1 o( z7 b/ z/ p. t - <?php9 l$ H0 l) ~+ H; z! `( E
- global $wpdb, $post;+ I5 Y# b$ Y0 X6 `" `
- $post_output = "";2 [" `' J+ { [2 B: J9 L
- $random_posts = "";
1 l: u- I: z& K# M' a& q - $sql="SELECT MAX(id),MIN(id) FROM $wpdb->posts";
( h/ g1 s7 i/ C - $result=mysql_query($sql);/ \- M& j( i! g: t$ @4 [ b
- $yi=mysql_fetch_array($result);6 P, i& M6 j8 F
- $idmax=$yi[0];6 m; S1 v4 Z( K9 D/ P
- $idmin=$yi[1];
* q9 i$ m! E3 j" y5 q f - $idlist='';
- p. e. v( [/ l/ }. M7 N0 y - for($i=1;$i<=20;$i++){ # _) V/ }6 s' Y! h
- if($i==1){ $idlist=mt_rand($idmin,$idmax); }
) P/ R4 C" L1 S- D2 b - else{ $idlist=$idlist.','.mt_rand($idmin,$idmax); } # M' k2 q/ f# i2 o a: l! c
- } 2 m r2 l U9 I7 `
- $idlist2="id,".$idlist;$ M5 }1 i. q! R x$ y4 a+ ]
- $sql="select * from $wpdb->posts where id in ($idlist) order by field($idlist2) LIMIT 0,12"; ' f/ A9 b4 J: B, I r* t1 g( H
& i" e& e4 b% J1 \. ~- $random_posts = $wpdb->get_results($sql);
6 M9 |# T5 d) H( l - $wp_rp_title= ''; 6 I% T* T" a8 G2 l9 M& A2 s$ B
- foreach ( $random_posts as $random_post )
* F$ [; y4 w" C7 L2 n. [2 ?, i" [ - {
2 l ?& j* f; a - $post_output.='<li>';7 P6 ]5 t0 `3 }4 ?5 j! P( ~0 C
-
$ H& V" b2 `4 r9 [, q3 p1 i - $post_output .= '<a href="'.get_permalink($random_post->ID).'" title="'.wptexturize($random_post->post_title).'" >'.wptexturize($random_post->post_title).'</a>';
8 G/ |+ \9 B" Q ] - 1 g/ Y6 S \& J; `- N7 |$ ]
- $post_output .= '</li>';
$ u& o: q. i; |# y' q! o7 s5 y) ] - }
) c: l% G9 \' ]4 Z$ x& n+ Q1 M
: |, p; r4 k. ]* O6 w* _+ n- echo $post_output;
' _" C. ?" Q4 ]5 }4 H, w4 z - ?>0 v; ]- e, m) u! b1 [- H& u) m. V+ A5 u
- </ul>
複製代碼
/ E9 W2 j! @- l* z |