本代碼參考了網上的代碼然後組合而成,之前花了幾小時測試的,隨機是真正的隨機,不會出現某些代碼id連續的問題,在我一個80w+文章的wp站測試過,我測試過N多隨機代碼,這個是占資源最少的了,有興趣的朋友可以研究更新一下,對有大數據網站又想用隨機文章的朋友或者有用。- <ul>; c/ _0 ?/ x+ g- V/ o" @, X
- <?php8 _- y2 v/ v: k' N( E' @
- global $wpdb, $post;
( ^! J' t' i* K# y) v - $post_output = "";
& {9 j# a" @7 U, R8 g* n. Y' e - $random_posts = "";
( @5 o# j7 O9 k1 A, s2 ?/ [ - $sql="SELECT MAX(id),MIN(id) FROM $wpdb->posts";
9 w$ {$ E; L$ I, ~ - $result=mysql_query($sql);
. C. p4 p: M+ X/ A; Z) c* p6 I# S8 K - $yi=mysql_fetch_array($result);6 `1 D- X7 c( w5 Z
- $idmax=$yi[0];
8 r( A8 }6 F0 ?- v/ @ - $idmin=$yi[1];$ {% e5 B" c2 X( a. i% `( X9 \
- $idlist=''; 4 u+ W. \+ z4 r- s! b4 R; _3 r1 O. H
- for($i=1;$i<=20;$i++){ ) W3 g. t6 Z7 d+ l
- if($i==1){ $idlist=mt_rand($idmin,$idmax); } 4 S2 q# M) ^7 E$ h! ]2 B* u! M
- else{ $idlist=$idlist.','.mt_rand($idmin,$idmax); }
" w. Y& b5 U8 E" b B - }
, G3 G& Z, i; {8 j2 B - $idlist2="id,".$idlist;1 O$ x8 m* P5 J: @/ i& c
- $sql="select * from $wpdb->posts where id in ($idlist) order by field($idlist2) LIMIT 0,12";
+ Z6 ^* b* h0 V, {/ Y - . ^4 B9 \, A7 ~" \( K) o% A w
- $random_posts = $wpdb->get_results($sql);- ^/ \: V6 M% Q7 n9 p
- $wp_rp_title= ''; 7 P' u( C* H3 u4 H: T# }
- foreach ( $random_posts as $random_post )) m- F: e7 s1 b' Q& P; s d
- {
z/ ]% s: s O% S* \4 N8 D - $post_output.='<li>';
3 U4 k" b/ z$ O2 a0 w -
% l! c' C+ X9 P- A3 l: } - $post_output .= '<a href="'.get_permalink($random_post->ID).'" title="'.wptexturize($random_post->post_title).'" >'.wptexturize($random_post->post_title).'</a>';( }# m2 M6 ^. f" \+ K% g: b/ w* q" _
- 6 B2 K6 h# l: B) R$ B5 s
- $post_output .= '</li>';
7 q, r7 l. m3 o. {+ y4 @& O) i' j - }# A9 n% C& d' d- D4 q6 r* \# @
- % U! O6 p; _$ X4 X, y
- echo $post_output;2 y% F: W6 R' _. _+ E# b
- ?> X# Y1 E# T1 A* \* E/ F b2 m) Y
- </ul>
複製代碼 ) e0 {, z7 H) P. H' v# K$ L: P
|