• A+

WordPress获取文章浏览次数及获取浏览次数最多的文章

2018-11-16 阅读: 287 次 评论 0 条 百度已收录
简单即是美 – Simple is beautiful
本文共383个字,预计阅读时间需要1分钟。

纯代码统计文章浏览次数
1、在主题的 functions.php文件的最后一个 ?> 前面添加下面的代码:

  1. function record_visitors() 
  2. { 
  3.  if (is_singular()) 
  4.  { 
  5.  global $post; 
  6.  $post_ID = $post->ID; 
  7.  if($post_ID) 
  8.  { 
  9.  $post_views = (int)get_post_meta($post_ID, 'views', true); 
  10.  if(!update_post_meta($post_ID, 'views', ($post_views+1))) 
  11.  { 
  12.  add_post_meta($post_ID, 'views', 1, true); 
  13.  } 
  14.  } 
  15.  } 
  16. } 
  17. add_action('wp_head', 'record_visitors'); 
  18. //函数名称:post_views 
  19. //函数作用:取得文章的阅读次数 
  20. function post_views($before = '(点击 ', $after = ' 次)', $echo = 1) 
  21. { 
  22.  global $post; 
  23.  $post_ID = $post->ID; 
  24.  $views = (int)get_post_meta($post_ID, 'views', true); 
  25.  if ($echo) echo $before, number_format($views), $after; 
  26.  else return $views; 
  27. }

2、在需要显示该统计次数的地方使用下面的代码调用:

  1. <?php post_views(' ', ' 次'); ?>

获取浏览次数最多的文章
1、这个一般来说,就是用来获得热门文章了.如果要获取上面的函数统计出来的浏览次数最多的文章,可以在 functions.php文件的最后一个 ?>; 前面添加下面的代码:

  1. //函数作用:取得阅读最多的文章 
  2. function get_most_viewed_format($mode = '', $limit = 10, $show_date = 0, $term_id = 0, $beforetitle= '(', $aftertitle = ')', $beforedate= '(', $afterdate = ')', $beforecount= '(', $aftercount = ')') { 
  3.  global $wpdb, $post; 
  4.  $output = ''; 
  5.  $mode = ($mode == '') ? 'post' : $mode; 
  6.  $type_sql = ($mode != 'both') ? "AND post_type='$mode'" : ''; 
  7.  $term_sql = (is_array($term_id)) ? "AND $wpdb->term_taxonomy.term_id IN (" . join(',', $term_id) . ')' : ($term_id != 0 ? "AND $wpdb->term_taxonomy.term_id = $term_id" : ''); 
  8.  $term_sql.= $term_id ? " AND $wpdb->term_taxonomy.taxonomy != 'link_category'" : ''; 
  9.  $inr_join = $term_id ? "INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)" : ''; 
  10.  // database query 
  11.  $most_viewed = $wpdb->get_results("SELECT ID, post_date, post_title, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) $inr_join WHERE post_status = 'publish' AND post_password = '' $term_sql $type_sql AND meta_key = 'views' GROUP BY ID ORDER BY views DESC LIMIT $limit"); 
  12.  if ($most_viewed) { 
  13.  foreach ($most_viewed as $viewed) { 
  14.  $post_ID = $viewed->ID; 
  15.  $post_views = number_format($viewed->views); 
  16.  $post_title = esc_attr($viewed->post_title); 
  17.  $get_permalink = esc_attr(get_permalink($post_ID)); 
  18.  $output .= "<li>$beforetitle$post_title$aftertitle"; 
  19.  if ($show_date) { 
  20.  $posted = date(get_option('date_format'), strtotime($viewed->post_date)); 
  21.  $output .= "$beforedate $posted $afterdate"; 
  22.  } 
  23.  $output .= "$beforecount $post_views $aftercount</li>"; 
  24.  } 
  25.  } else { 
  26.  $output = "<li>N/A</li>n"; 
  27.  } 
  28.  echo $output; 
  29. }

2、然后使用下面的函数调用:

  1. <?php get_most_viewed_format(); ?>

说明:这里部落需要补充一下的是,用上面的方法获得的文章浏览次数统计,与WP-Postviews 插件是有所差别的,这里的代码获取的,其实就连搜索引擎爬虫也会进行统计。

本文地址:https://www.chyiyang.cn/23.html
本文标题:WordPress获取文章浏览次数及获取浏览次数最多的文章
版权声明:本站所有文章除特别声明外,均采用 署名-非商业性使用-禁止演绎 4.0 国际 许可协议。请尊重他人的劳动成果,转载请写明出处!
所属分类:WP相关

发表评论


表情