Hướng dẫn đếm lượt xem và hiển thị bài viết xem nhiều trong WordPress

Hướng dẫn đếm lượt xem và hiển thị bài viết xem nhiều trong WordPress

Hiển thị lượt xem (views) thường phổ biến ở những trang web tin tức, blog,… Tuy nhiên WordPress lại không hỗ trợ sẵn phần này và nếu muốn có bạn phải cài thêm các plugin khác. Trong bài viết này mình sẽ giới thiệu đến bạn cách tạo ra một Plugin đếm lượt xem và hiển thị ra bài viết số view của bài viết đó.

Tạo hàm đếm và hiển thị lượt view

Mình sẽ viết thẳng vào trong file functions.php chứ không tạo ra một plugin riêng nhé, nếu bạn thích có thể tạo ra một plugin riêng cho dễ quản lý. Thêm đoạn code sau vào cuối file.

function tdc_PostViews($post_ID) {
   $count_key = 'post_views_count';
   $count = get_post_meta($post_ID, $count_key, true);

   if($count == ''){
      $count = 1;
      delete_post_meta($post_ID, $count_key);
      add_post_meta($post_ID, $count_key, '1');
      return $count . ' Lượt xem';
   }else{
      $count++;
      update_post_meta($post_ID, $count_key, $count);
      return $count . ' Lượt xem';
    }
  }

Giải thích:

  • $count_key: là biến lưu giá trị đặt tên cho meta lưu lượt xem vào database.
  • $count: là biến lấy ra giá trị meta lượt xem đã lưu.
  • Hàm if đầu tiên sẽ kiểm tra xem $count đã có giá trị gì chưa, nếu chưa thì set bằng 0, sau đó xóa meta đó bằng hàm delete_post_meta() và add lại một meta mới bằng hàm add_post_meta(). cuối cùng là trả về số view.
  • Nếu giá trị $count lớn hơn 0 thì sẽ tăng giá trị này lên 1 bằng lệnh $count++, và câp nhật lại meta bằng hàm update_post_meta(). Cuối cùng là trả về số lượt view đã tăng.

Hiển thị số lượt đếm trên themes

Đã có hàm có thể tạo ra lượt đếm rồi, bây giờ mình sẻ áp dụng nó để hiển thị lên themes. Để sử dụng bạn chỉ cần dùng đoạn code sau:

<?php 
  if(function_exists('tdc_PostViews')) 
  {  
    echo tdc_PostViews(get_the_ID());  
  }
?>
Kết quả hiển thị số lượt xem bài viết

Kết quả hiển thị số lượt xem bài viết

Vì giá trị hàm trả về là return nên phải sử dụng echo để in ra giá trị trả về. Và mình có sử dụng thêm function_exists để kiểm tra sự tồn tại của hàm trước khi gọi hàm để tránh lỗi. get_the_ID() là hàm để lấy ID hiện tại của bài post.

Lưu ý là hàm trên chỉ dùng để hiển thị view trong bài viết thôi nhé, vì nó bao gồm hàm tăng view. Nếu như bạn gọi ở danh mục hoặc trang chủ thì sẽ không thực thi được hoặc thực thi sai do không có id. Nếu bạn muốn hiển thị số view ở trang chủ hoặc danh mục thì bạn cần thêm đoạn code sau vào file functions:

function get_PostViews($post_ID){
  $count_key = 'post_views_count';
  $count = get_post_meta($post_ID, $count_key, true);
  return $count;
}

sau đó sử dụng đoạn code dưới để hiển thị.

<?php 
   $views = get_PostViews($post->ID); 
   if($views!=null) {
     echo $views;
   } 
   else{
     echo '0';} 
?>
Kết quả hiển thị số lượng xem bài viết trong danh mục

Kết quả hiển thị số lượng xem bài viết trong danh mục

Thêm cột hiển thị số view trong dashboard

Mình tính không làm phần này nhưng vì có nhiều bạn hỏi nên mình làm luôn. Trước đây mình thường sử dụng cái này để hiển thị những thông tin quan trọng mà mình sử dụng meta box để lưu trữ. Mình sẽ có bài viết cụ thể về phần này trong một bài riêng. Phần này mình chỉ chia sẻ đoạn code hiển thị đó thôi.

function get_PostViews($post_ID){
   $count_key = 'post_views_count';
   $count = get_post_meta($post_ID, $count_key, true);
   return $count;
}

function post_column_views($newcolumn){
   $newcolumn['post_views'] = __('Lượt xem');
   return $newcolumn;
}

function post_custom_column_views($column_name, $id){
   if($column_name === 'post_views'){
     echo get_PostViews(get_the_ID());
   }
   if (get_PostViews(get_the_ID())== null)
   {
     echo '0';
   }
}
add_filter('manage_posts_columns', 'post_column_views');
add_action('manage_posts_custom_column', 'post_custom_column_views',10,2);
  • Hàm get_PostViews() mình đã viết ở trên kia rồi, hàm này lấy ra số view của một post.
  • Hàm post_column_views() dùng để tạo ra một cột có tên “Lượt xem”.
  • Hàm post_custom_column_views() để hiển thị nội dung trong cột.
  • Sử dụng hook filter manage_posts_columns để hiển thị cột.
  • Sử dụng hook action manage_posts_custom_column để hiển thị số view lên cột.

Kết quả hiển thị:

Kết quả khi thêm cột lượt xem

Kết quả khi thêm cột lượt xem

Bạn có thể tạo vào một Plugin và sử dụng lại cho nhiều themes cũng được nhé. Xem lại cách tại plugin tại: Hướng dẫn tạo một Plugin đơn giản bằng WordPress.

Chúc bạn thành công !