- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
Trong bài này mình sẽ hướng dẫn bạn theo dõi và hiển thị số lượng views của bài viết. Cơ chế là +1 view khi truy cập chi tiết vào bài viết (single). Có nhiều cách sử lý cộng view khi người dùng xem bài viết. Bạn có thể thiết lập mỗi IP chỉ cộng+1 view trong ngày, có nghĩa nếu cùng IP đó truy cập nhiều lần vào một bài viết thì chỉ tính 1 view của IP đó trong ngày mà thôi, đến ngày xong thì mở lại. Phần này bạn tự code thêm vào plugin.
Đầu tiên chúng ta sử dụng plugin hiển thị view cho post đó là WP-PostViews.
Cách sử dụng WP-PostViews
Sau khi tải plugin tạo post view xong, bạn kích hoạt plugin. Rồi vào WP-Admin->settings->postviews để cấu hình thêm hoặc sử dụng mặc định.
Để Cấu hình plugins, bạn vào Settings->PostViews.
- Count Views Form: giới hạn registered-user/anonymous cho phép hiển thị views trong trang.
- Exclude Bot Views: chọn yes/no, nếu giá trị này là yes các máy tìm kiếm sẽ không nạp URL có trong ‘Most Viewed Template’.
- Views Template: Thiết lập giao diện template hiển thị lượt views. Sử dụng một số biến:
%VIEW_COUNT%, %POST_URL%… - Most Viewed Template: Thiết kế cho cỗ máy tìm kiếm, mặc định template có dạng:
<li><a href="%POST_URL%" title="%POST_TITLE%">%POST_TITLE%</a> - %VIEW_COUNT% views</li>
Cho phép các biến trong template:
– %VIEW_COUNT%
– %POST_TITLE%
– %POST_DATE%
– %POST_TIME%
– %POST_EXCERPT%
– %POST_CONTENT%
– %POST_URL%
Các tùy chọn hiển thị views cho các page template như Home page, Single Posts, Pages….bạn có thể bỏ hiển thị lượt views của một số trang hoặc giới hạn những user đăng nhập mới thấy hoặc hiển thị thông tin views của bài viết cho mọi người truy cập.
– Thông thường bạn sẽ +1view khi người dùng xem bài viết chi tiết, mở
if(function_exists('the_views')) { the_views(); } ?>
Chú ý:
- Bạn cần kiểm tra hàm the_views có tồn tại không, phòng trường hợp bạn disabled plugin sẽ gây lỗi website.
- Bạn có thể đặt hàm trên vào bất kể nơi đâu bạn muốn track post views.
Hàm the_views()
hiển thị lượt views của bài viết hiện tại nhưng chỉ +1 views khi xem bài viết chi tiết.
Tạo views cho post với Post Views Counter
Plugin này được thiết kế tương thích với WP-PostViews nhưng có tối ưu hơn, cho phép bạn tùy chỉnh chi tiết. Tải plugin Post Views Counter và cài đặt như bình thường.
Sau khi cài đặt xong, bạn tiến hành cấu hình cho plugin Settings->Post Views Counter.
– Tại đây chúng ta lựa chọn Post Type hỗ trợ hiển thị views, liệt kê tại mục Post Types Count.
– Counter Mode: phương thức lấy thông tin post views bằng cách dùng mã PHP trực tiếp hoặc thông qua Javascript. Nếu bạn đang sử dụng các cache plugin trong website thì check vào javascript.
– Time Between Counts: thiết lập khoảng thời gian reset lại để đếm lại view cho một user của bài viết đó. Như mình nói ý tưởng ở trên, mặc định sau 24h plugin sẽ mở lại IP cho phép +1 view mới cho bài viết đó.
– Reset Data: xóa dữ liệu post views sau thời gian chỉ định, nếu bạn muốn duy trì dữ liệu views của các posts thì để giá trị này =0
– Exclude Visitors: loại bỏ hiển thị views trên trang đối với loại user bạn chỉ định. Thậm trí cho phép chọn từng quyền user.
Lưu ý: khi chọn “Selected user roles” bạn cần nhấn Save changes để lưu lại, sau đó mới thấy mục nhập thêm user roles ở phía dưới.
– Exclude IPs: bạn có thể giới hạn từ địa chỉ IP truy cập vào web, nhấn vào Add new để khai báo IP mới.
– WP-PostViews: nhập dữ liệu posts views đồng bộ từ plugin WP-PostViews.
– Deactivation: option cuối cùng, kích hoạt xóa dữ liệu khi deactive plugin. Thường thì bạn không nên, vì khi enabled lại dữ liệu của plugin sẽ mất.
Chuyển sang tab Display, nơi cấu hình hiển thị. Có 2 vị trí hiển thị tự động, tại mục Position chọn:
+’before the content’: view sẽ hiển thị trước nội dung bài viết.
+’after the content’: view sẽ hiển thị sau nội dung bài viết.
Hoặc bạn sẽ chèn mọi trí trong web site sử dụng shortcode, trường hợp này bạn chọn Position=manual.
[post-views]
Đừng quên nhấn save change để lưu lại.
Kết quả:
Tạo hàm views cho post không sử dụng plugin
Mở functions.php và chèn thêm đoạn code dưới đây:
//hiển thị view function getPostViews($postID){ $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); return "0 View"; } return $count.' Views'; } //hàm thiết lập views function setPostViews($postID) { $count_key = 'post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ $count = 0; delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); }else{ $count++; update_post_meta($postID, $count_key, $count); } }
– Để theo dõi post view giống như cách trên bạn mở single.php , tìm đoạn:
< ?php while (have_posts()) : the_post(); ?>
và thêm đoạn code sau vào phía dưới:
if(function_exists('setPostViews')){ setPostViews(); //+1views for post getPostViews(); //hiển thị post view }
Ngoài ra, còn có một phương thức khác, giúp tăng thời gian tải trang vì khi người dùng truy cập vào mỗi bài viết phải ghi vào CSDL gây ra chậm website. Để giải quyết vấn đề này bạn có thể lưu lượt views của posts ở nơi lưu trữ khác, tham khảo bài viết đếm lượt views bài viết trong wordpress sử dụng Firebase.
Chúc bạn thành công!
Nếu bạn thích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể theo dõi blog này trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype