在以前的文章“WordPress调用最新、热门和随机文章代码”中调用热门文章的代码是根据评论数目的多少来排列的,其实并不很合理。更合理的判断方法应该是根据某时间段内文章的阅读量来排序。下面分享的调用热门文章代码就是根据这个逻辑来编写的。
因为要调用文章的阅读量作为热门文章的根据,下面代码的运行要以你的wordpress安装并已启用WP-PostViews统计插件为前提。
在主题文件function.php中添加以下代码:
//热门文章调用函数 function get_timespan_most_viewed($mode = '', $limit = 10, $days = 7, $display = true) { global $wpdb, $post; $limit_date = current_time('timestamp') - ($days*86400); $limit_date = date("Y-m-d H:i:s",$limit_date); $where = ''; $temp = ''; if(!empty($mode) && $mode != 'both') { $where = "post_type = '$mode'"; } else { $where = '1=1'; } $most_viewed = $wpdb->get_results("SELECT $wpdb->posts.*, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_date < '".current_time('mysql')."' AND post_date > '".$limit_date."' AND $where AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER BY views DESC LIMIT $limit"); if($most_viewed) { foreach ($most_viewed as $post) { $post_title = get_the_title(); $post_views = intval($post->views); $post_views = number_format($post_views); $temp .= "<li><a href=\"".get_permalink()."\">$post_title</a>".__('', 'wp-postviews')."</li>"; } } else { $temp = '<li>'.__('N/A', 'wp-postviews').'</li>'."\n"; } if($display) { echo $temp; } else { return $temp; } }
热门文章的调用代码:
<?php if (function_exists('get_most_viewed')): ?> <?php get_timespan_most_viewed('post',5,30, true, true); ?> <?php endif; ?>
其中的参数:
- post:显示日志,若留空则显示单篇日志+页面,若填page则只显示页面。
- 5:显示的5篇日志。
- 30:只显示30天内的日志,如果要显示一周内的日志,可以改为7(可根据自己需要更改)。
- true:显示日志,若改为false则不显示文章。
- false:不显示搜寻引擎机器人的查询次数,若改为true则全部显示。
提示:需要更改热门文章调用的css样式可以更改上面get_timespan_most_viewed
函数的这段代码:
$temp .= "<li><a href=\"".get_permalink()."\">$post_title</a>".__('', 'wp-postviews')."</li>";
上面的是调用全部分类的热门文章代码,如果是调用某个分类下的热门文章代码如下:
<?php if (function_exists('get_most_viewed_category')): ?> <?php get_most_viewed_category(4, 'post', 5); ?> <?php endif; ?>
其中的参数:
- 4:该分类的ID;
- post:显示日志,若留空则显示单篇日志+页面,若填page则只显示页面;
- 5:显示的5篇日志。