Nhiều lúc bạn muốn đếm số lượt xem bài viết trong WordPress nhưng bạn lại không muốn dùng plugin để thêm nặng nề, thủ thuật sau đây có lẽ sẽ hữu ích cho bạn!
1. Thêm function wpb_set_post_views($postID) và wpb_get_post_views($postID) vào file function.php
function wpb_set_post_views($postID) { $count_key = 'wpb_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); } } //Dòng này để chắc chắc WordPress sẽ đếm chính xác hơn remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); function wpb_get_post_views($postID){ $count_key = 'wpb_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; } return $count; }
- wpb_set_post_views($postID): hàm này sẽ thực hiện đếm số lượt xem bài viết mỗi khi bạn load một bài viết
- wpb_get_post_views($postID): hàm này sẽ thực hiện hiển thị số lượt xem bài viết bạn đã đếm được
2. Gọi function wpb_set_post_views($postID) trong file single.php
<?php /** * The Template for displaying all single posts. * * @package ... */ wpb_set_post_views(get_the_ID()); get_header(); ?> ...
Không chỉ riêng file single.php, bạn có thể thêm vào bất cứ file nào mà bạn nghĩ nó sẽ load được bài viết
3. Echo function wpb_get_post_views($postID) vào nơi nào bạn muốn hiển thị số lượt xem, mình echo trong phần content bài viết với dòng như sau
<span><i class="fa fa-eye" aria-hidden="true"> </i><?php echo wpb_get_post_views(get_the_ID()); ?></span>
Echo ra kết quả đếm lượt truy cập, ở trên mình sử dụng thư viện Bootstrap nên có thêm icon eye cho đẹp mắt, bạn có thể tùy chỉnh lại theo ý mình thích.
Vậy là ok rồi nhé các bạn, chúc các bạn thành công!
ok , đc rồi, cảm ơn b, bài viết hay lắm
Bạn thay đoạn code này:
Thành “Lượt xem: “
Cho mình hỏi, code này có áp dụng được với web có dùng plugin tạo cache như wp super cache , wp-rocket…không ạ.
Dùng được bình thường nha bạn. Không có vấn đề gì.
Chào anh, anh cho em hỏi chút! – Đây là trang của em ạ: MMEVN.COM
– Em dùng code đếm views mặc định thì là 0 views
– Còn khi em dùng funtions trên mạng + code thì nó hiện thị views gốc.
Nhưng xem trang thì lại không nẩy views.
Anh ơi, anh giúp em với ạ.!
Code mặc định 0 là đùng rồi đó bạn. Code trên mình khai báo mặc định là 0, sau đó sẽ tăng dần. Còn bạn vẫn muốn đếm lại các views từ trước thì có thể dùng plugin Post Views Counter hoặc WP-PostViews, trong CSDL WordPress vẫn có trường lưu trữ số lượng views bài viết, plugin sẽ truy xuất và lấy ra con số đó.
Chào bạn mình làm theo các bước , bước cuối cùng mình bỏ vào content.php . Không thấy hiển thị gì hết vậy bạn
Bạn thử xem kỹ lại bước này nhé: 2. Gọi function wpb_set_post_views($postID) trong file single.php
Có thể bạn chưa gọi được hàm trong function.php ấy. Nếu được, có thể chụp hình hoặc gửi file sang mình check giúp cho.
A ơi cho em hỏi trường hợp mình chưa nhấp vào một bài viết nào đó! mà mình nhấp vào Popular post(lượt view nhiều nhất) chẳng hạn thì cái biến ‘wpb_post_views_count’ lúc này ở các bài viết chưa được tạo thì sẽ không có bài viết nào xuất hiện ở Tabs Popular post ak anh! có cách nào khi mình load trang chủ lên nhấp vào popular post là nó sẽ select các bài chưa có lượt view lun k anh! em cảm ơn nhiều ak!
Mình nghĩ sẽ có cách để select, nhưng nếu bạn viết xong một bài viết thì tất nhiên bạn sẽ là người đầu tiên xem bài viết của mình có ok không, lúc này đã đếm được 1, và việc tìm cách để show ra những bài viết chưa có view mình nghĩ nó không còn quan trọng nữa 🙂
remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0) Sao em bỏ hàm này vào mà nó vẫn đếm 2 lần là sao ak :((((((((
Lúc bạn test function, bạn có đang đăng nhập quản trị vào website không? Nếu đăng nhập quản trị thì mỗi lần F5 sẽ tính một lần, lệnh remove_action( ‘wp_head’, ‘adjacent_posts_rel_link_wp_head’, 10, 0) chỉ có tác dụng với khách truy cập website thôi bạn 🙂
Cho e hỏi cái biến ‘wpb_post_views_count’ ở đâu ra vậy ak! e add vào function nó không hoạt động
Nếu website bạn có sử dụng cache thì bạn thử tắt cache đi và kiểm tra lại hàm có hoạt động không 😀
Thank Bạn nhiều! đã hiếu! hihi! nó k có nó sẽ tự sinh :v