一聚教程网:一个值得你收藏的教程网站

热门教程

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

时间:2022-06-25 18:37:32 编辑:袖梨 来源:一聚教程网

纯代码统计文章浏览次数

1.在主题的 functions.php文件的最后一个 ?> 前面添加下面的代码:

 代码如下 复制代码
function record_visitors()  
{  
    if (is_singular())  
    {  
      global $post;  
      $post_ID = $post->ID;  
      if($post_ID)  
      {  
          $post_views = (int)get_post_meta($post_ID, 'views', true);  
          if(!update_post_meta($post_ID, 'views', ($post_views+1)))  
          {  
            add_post_meta($post_ID, 'views', 1, true);  
          }  
      }  
    }  
}  
add_action('wp_head', 'record_visitors');  
/// 函数名称:post_views  
/// 函数作用:取得文章的阅读次数  
function post_views($before = '(点击 ', $after = ' 次)', $echo = 1)  
{  
  global $post;  
  $post_ID = $post->ID;  
  $views = (int)get_post_meta($post_ID, 'views', true);  
  if ($echo) echo $before, number_format($views), $after;  
  else return $views;  

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

文章被阅读: 

获取浏览次数最多的文章

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

 代码如下 复制代码

/// 函数作用:取得阅读最多的文章  
function get_most_viewed_format($mode = '', $limit = 10, $show_date = 0, $term_id = 0, $beforetitle= '(', $aftertitle = ')', $beforedate= '(', $afterdate = ')', $beforecount= '(', $aftercount = ')') {  
  global $wpdb, $post;  
  $output = '';  
  $mode = ($mode == '') ? 'post' : $mode;  
  $type_sql = ($mode != 'both') ? "AND post_type='$mode'" : '';  
  $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" : '');  
  $term_sql.= $term_id ? " AND $wpdb->term_taxonomy.taxonomy != 'link_category'" : '';  
  $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)" : '';  
  // database query  
  $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");  
  if ($most_viewed) {  
   foreach ($most_viewed as $viewed) {  
    $post_ID    = $viewed->ID;  
    $post_views = number_format($viewed->views);  
    $post_title = esc_attr($viewed->post_title);  
    $get_permalink = esc_attr(get_permalink($post_ID));  
    $output .= "

  • $beforetitle$post_title$aftertitle";  
        if ($show_date) {  
          $posted = date(get_option('date_format'), strtotime($viewed->post_date));  
          $output .= "$beforedate $posted $afterdate";  
        }  
        $output .= "$beforecount $post_views $aftercount
  • ";  
       }  
      } else {  
       $output = "
  • N/A
  • n";  
      }  
      echo $output;  

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

     代码如下 复制代码

     

    小结

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

    热门栏目