网站地图    收藏   

主页 > 后端 > wordpress教程 >

WordPress 文章浏览次数与点击排行榜的例子 - Wor

来源:自学PHP网    时间:2014-11-28 23:41 作者: 阅读:

[导读] 我们在很多个人站长博客中会看到有一些网站的浏览排行了,那么这种功能要如何来实现呢,下面小编就同各位介绍一下吧.在一小时内刷新文章不会多次统计,只会被算作一次访问,把下面的...

WordPress 文章浏览次数与点击排行榜的例子

我们在很多个人站长博客中会看到有一些网站的浏览排行了,那么这种功能要如何来实现呢,下面小编就同各位介绍一下吧.

在一小时内刷新文章不会多次统计,只会被算作一次访问,把下面的代码复制粘贴到主题的 functions.php 里面:

  1. /***** Postviews *****/ 
  2. function record_visitors(){ 
  3. if (is_singular()) { 
  4. global $post
  5. $post_ID = $post->ID; 
  6. if($post_ID) { 
  7. if(isset($_COOKIE['views'.$post_id.COOKIEHASH]) && $_COOKIE['views'.$post_id.COOKIEHASH] == ’1′)return
  8. $post_views = (int)get_post_meta($post_ID, ‘views’, true); 
  9. if(!update_post_meta($post_ID, ‘views’, ($post_views+1))) { 
  10. add_post_meta($post_ID, ‘views’, 1, true); 
  11. setcookie(‘views’.$post_id.COOKIEHASH,’1′,time() + 3600,COOKIEPATH,COOKIE_DOMAIN);//设置时间间隔 
  12. }}} 
  13. add_action(‘wp_head’, ‘record_visitors’); 
  14. function post_views($before = ”, $after = ”, $echo = 1){ 
  15. global $post;  //phpfensi.com 
  16. $post_ID = $post->ID; 
  17. $views = (int)get_post_meta($post_ID, ‘views’, true); 
  18. if ($echoecho $before, number_format($views), $after
  19. else return $views

在需要的位置用下面的代码调用,代码如下:

<?php if (function_exists(‘post_views’)) post_views(); ?>

然后是浏览次数排行榜,参考了WP-Postviews 插件源代码,可以设置限定近期一段时间内的文章的浏览次数排行,更为实用,所以这个相当不错的插件真的可以丢掉了.

添加到 functions.php 里,代码如下:

  1. /***** Most Viewed  *****/ 
  2. function most_viewed($limit = 10) { 
  3. global $wpdb$post
  4. $output = ”; 
  5. $most_viewed = $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(‘-100 days’)) . “‘ AND post_type =’post’ AND post_status = ‘publish’ AND meta_key = ‘views’ AND post_password = ” ORDER BY views DESC LIMIT $limit”);//设置近100天内文章的排行榜 
  6. if($most_viewed) { 
  7. foreach ($most_viewed as $post) { 
  8. $output .= “\n<li><a href= \”".get_permalink($post->ID).”\” rel=\”bookmark\” title=\”".$post->post_title.” (“.$post->views.”+)\” >”. $post->post_title.” (“.$post->views.”+)</a></li>”; 
  9. echo $output
  10. }} 

在页面适当的地方调用代码如下,括号内参数为显示数目,代码如下:

<?php if (function_exists(‘most_viewed’)) most_viewed(10); ?> 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论