刚开始做这个主题的时候,用的是Wordpress自带的函数 get_posts 来获取热门文章的,然而这个函数按评论排序是所有文章中评论最多的文章,这样就有可能导致“热点文章”的列表基本不会更新,这显然不是我们想要的。
今天想给自己的9IPHP主题添加这个功能的时候,百度找到一种方法,是获取最近某段时间内评论最多的文章的。方法是zwwooooo的《WordPress: 某段时间内最热文章》,下面上代码:
/* 某段时间内最热文章*/ function most_comm_posts($days=7, $nums=10) { //$days参数限制时间值,单位为‘天’,默认是7天;$nums是要显示文章数量 global $wpdb; $today = date("Y-m-d H:i:s"); //获取今天日期时间 $daysago = date( "Y-m-d H:i:s", strtotime($today) - ($days * 24 * 60 * 60) ); //Today - $days $result = $wpdb->get_results("SELECT comment_count, ID, post_title, post_date FROM $wpdb->posts WHERE post_date BETWEEN '$daysago' AND '$today' ORDER BY comment_count DESC LIMIT 0 , $nums"); $output = ''; if(empty($result)) { $output = '<li>None data.</li>'; } else { foreach ($result as $topten) { $postid = $topten->ID; $title = $topten->post_title; $commentcount = $topten->comment_count; if ($commentcount != 0) { $output .= '<li><a href="'.get_permalink($postid).'" title="'.$title.'">'.$title.'</a> ('.$commentcount.')</li>'; } } } echo $output; }
调用方法:在sidebar.php中添加如下代码
<h3>近期最热文章</h3> <ul> <?php if(function_exists('most_comm_posts')) most_comm_posts(30, 10); ?> </ul>
样式表什么的就自己写吧,效果请查看本站侧边栏“热点文章”。
糯米汇 2014/06/10 11:13
博主是技术控啊!
Specs 2014/06/10 11:29
@ 这个都是我在做这个主题的时候,从别人主题里找到的代码~~~记个笔记,o(∩_∩)o 哈哈
糯米汇 2014/06/10 11:30
@ 牛! 佩服
文字控吧 2014/07/30 14:31
主题右边,热点文章/最新文章/随机文章。 可否请教下贵站是怎么实现的呢??
Specs 2014/07/30 14:38
@ tab标签,热点文章的获得办法就是这篇文章写的,最新和随机文章用 get_posts 来获取