最新日誌、熱評日誌、隨機日誌這三個功能在函數上是很相近的,無非就是一個排序的不同,最新日誌是按照發布時間排序,熱評日誌是按照評論數量排序,
隨機日誌則是隨機排序。所以我索性就把這三個函數合併為一,一方面減少 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 轉載請註明文章出處鏈接和作者