最新日誌、熱評日誌、隨機日誌這三個功能在函式上是很相近的,無非就是一個排序的不同,最新日誌是按照發布時間排序,熱評日誌是按照評論數量排序,
隨機日誌則是隨機排序。所以我索性就把這三個函式合併為一,一方面減少 functions.php 中程式碼的冗餘,另一方面也方便自己管理。
把以下函式複製到 WordPress 主題目錄下的 functions.php 中:
| function get_posts($orderby = '', $plusmsg = '') { $get_posts = query_posts('posts_per_page=10&caller_get_posts=1&orderby='.$orderby); foreach ($get_posts as $get_post) { $output = ''; $post_date = mysql2date('y 年 m 月 d 日', $get_post->post_date); $commentcount = '('.$get_post->comment_count.' 條評論)'; $post_title = htmlspecialchars(stripslashes($get_post->post_title)); $permalink = get_permalink($get_post->ID); $output .= '<li><a href="http://'/span%20span./span%20span$permalink/span%20span./span%20span'" title="'.$post_title.'">'%20. $post_title . '</a>'.$$plusmsg.'</li>'; echo '<ul>'.$output.'</ul>'; } wp_reset_query(); } |
呼叫方法分別如下:
| <?php //最新日誌 get_posts( $orderby = 'date', $plusmsg = 'post_date' ); //熱評日誌 get_posts( $orderby = 'comment_count', $plusmsg = 'commentcount' ); //隨機日誌 get_posts( $orderby = 'rand', $plusmsg = 'post_date' ); ?> |
可以看到它們三者共用一個函式,而只是引數不同罷了,如題,最新、熱評、隨機日誌函式三體合一就完成了。
下面我介紹一下把 WordPress 的最新、熱評、隨機日誌這三體合一的函式設定在 30 天內的時間範圍裡,效果就見本站上的側邊欄上的這些日誌吧,都在 30 天之內。
首先把以下函式放在 WordPress 主題資料夾裡的 functions.php 中:
| function filter_where($where = '') { $where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'"; return $where; } function some_posts($orderby = '', $plusmsg = '',$limit = 10) { add_filter('posts_where', 'filter_where'); $some_posts = query_posts('posts_per_page='.$limit.'&caller_get_posts=1&orderby='.$orderby); foreach ($some_posts as $some_post) { $output = ''; $post_date = mysql2date('y 年 m 月 d 日', $some_post->post_date); $commentcount = '('.$some_post->comment_count.' 條評論)'; $post_title = htmlspecialchars(stripslashes($some_post->post_title)); $permalink = get_permalink($some_post->ID); $output .= '<li><a href="http://'/span%20span./span%20span$permalink/span%20span./span%20span'" title="'.$post_title.'">'%20. $post_title . '</a>'.$$plusmsg.'</li>'; echo $output; } wp_reset_query(); } |
可以看到第二行中的 30 就是指最近 30 天,也可以根據你自己的需要修改這個時間。至於呼叫則和升級版之前的一樣,下面只是比上次多加了一個 $limit 引數:
| <?php //最新日誌 some_posts( $orderby = 'date', $plusmsg = 'post_date', 10 ); //熱評日誌 some_posts( $orderby = 'comment_count', $plusmsg = 'commentcount', 10 ); //隨機日誌 some_posts( $orderby = 'rand', $plusmsg = 'post_date', 10 ); ?> |
OK,接下來我要把點選最高的排行榜也改成 30 天內的排名,這樣對經常來光顧的使用者來說應該更合理吧,否則看來看去就那幾篇,標題都看爛了。
文章作者:萬戈
文章來源:http://wange.im/three-in-one-update.html 轉載請註明文章出處連結和作者