上門一對一計算機家教
當前位置: 首頁 > Wordpress家教 >

wordpress最新、熱評和隨機日志函數三體合一

點擊: 時間:2013-10-14 來源:北京家教網
最新日志、熱評日志、隨機日志這三個功能在函數上是很相近的,無非就是一個排序的不同,最新日志是按照發布時間排序,熱評日志是按照評論數量排序,隨機日志則是隨機排序。所以我索性就把這三個函數合并為一,一方面減少 functions.php

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

------分隔線----------------------------
30选5开奖查询