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