对于wordpress文章点击统计及排行榜的功能,使用纯粹的手写代码去实现实在是太繁复了,因此绝大多数的人都会使用WP-PostViews统计插件来进行实现。子寒互动视觉也不例外,但是问题又出现了,这款插件并不能实现某一时间段内的点击排行,比如说:我们想实现30天内点击排行榜,这款插件就无法实现了,这也就导致了文章点击排行榜内始终都是那么几篇文章,就像是本站的点击排行中有些文章已经突破了20000+的点击量了,但是有些文章因为始终没有机会上排行榜而点击量始终徘徊在1000左右甚至更少。
这样的不人性化的功能看起来比较像现实中的那句:有钱的的越来越有钱,没钱的越来越没钱 – –
显然这样的排行对于一个站点来说并没有太大的实际用处,对于增加用户的粘度并没有多大积极的作用。
很多大型的站点在做文章点击排行时都会给这个排行一个时间限制,以便使这个排行榜可以经常的自动更换,比如:一周排行、一月排行甚至24小时内点击排行等。作为一个个人站点,点击量并不会更新的太快,因此我们仅仅使用月度排行,也就是说显示30天内的文章点击排行,过了30天这个排行就会自动刷新了。
要想实现这个想法并不难,只要在functions.php文件中添加一段代码就可以了,本代码来源于万戈,有兴趣的朋友可以去他那里转转,毕竟也是名博之一,很多东西都很有料的。
请看下面具体的实现步骤吧!
1.首先要安装并开启WP-PostViews统计插件,没有统计咋能做排行?这一点强调似乎有点多余了 – –
2.打开主题包中的functions.php文件,然后将下面的一大段代码全部丢进去:
- //本文代码为30天内点击排行榜
- //请将此代码放在functions.php文件的<?php和?>之间的位置
- //编码时请选择专业的编码工具
- function mostViewedPostList($mode = ”, $limit = 10, $chars = 0, $display = true) {
- global $wpdb, $post;
- $views_options = get_option(‘views_options’);
- $where = ”;
- $temp = ”;
- $output = ”;
- if(!emptyempty($mode) && $mode != ‘both’) {
- $where = “post_type = ‘$mode'”;
- } else {
- $where = ‘1=1′;
- }
- $mostViewedPostList = $wpdb->get_results(“SELECT DISTINCT $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 > ‘” . date(‘Y-m-d’, strtotime(‘-30 days’)) . “‘ AND $where AND post_status = ‘publish’ AND meta_key = ‘views’ AND post_password = ” ORDER BY views DESC LIMIT $limit”);
- if($mostViewedPostList) {
- foreach ($mostViewedPostList as $post) {
- $post_views = intval($post->views);
- $post_title = get_the_title();
- if($chars > 0) {
- $post_title = snippet_text($post_title, $chars);
- }
- $post_excerpt = views_post_excerpt($post->post_excerpt, $post->post_content, $post->post_password, $chars);
- $post_content = get_the_content();
- $temp = stripslashes($views_options['mostViewedPostList_template']);
- $temp = str_replace(“%VIEW_COUNT%”, number_format_i18n($post_views), $temp);
- $temp = str_replace(“%POST_TITLE%”, $post_title, $temp);
- $temp = str_replace(“%POST_EXCERPT%”, $post_excerpt, $temp);
- $temp = str_replace(“%POST_CONTENT%”, $post_content, $temp);
- $temp = str_replace(“%POST_URL%”, get_permalink(), $temp);
- $output .= $temp;
- }
- } else {
- $output = ‘<li>N/A</li>’.“\n”;
- }
- if($display) {
- echo $output;
- } else {
- return $output;
- }
- }
做完上一步后,我们只需要在需要显示30天内点击排行榜的地方添加以下代码就可以了:
- <?php
- if (function_exists(‘get_mostViewedPostList’) & function_exists(‘mostViewedPostList’)){
- echo ‘<ul>';
- //10为调用的篇数,根据自己实际情况修改
- mostViewedPostList(‘post’,10);
- echo ‘</ul>';
- }
- ?>
方法就介绍到这里,其实24小时内文章排行榜及一周点击排行都可以根据上面的代码思路去修改,在此暂时就不先去扩展了,大家有兴趣的话自己去捯饬吧!