Hướng dẫn code đếm số lượt xem bài viết WordPress không dùng plugin

Mã giảm giá AZDIGI

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 c...

Khắc phục lỗi Briefly Unavailable for Scheduled Maintenance WordPress
Nên tắt ngay XML-RPC để ngăn chặn tấn công DDoS trên WordPress
Các plugin Backup dữ liệu tốt nhất cho WordPress

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!

Chia sẻ bài viết với:

COMMENTS

WORDPRESS: 7
  • comment-avatar

    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!

    • comment-avatar

      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 🙂

  • comment-avatar
    Thien Y 5 tháng

    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 :((((((((

    • comment-avatar

      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 🙂

  • comment-avatar

    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

    • comment-avatar

      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 😀

      • comment-avatar

        Thank Bạn nhiều! đã hiếu! hihi! nó k có nó sẽ tự sinh :v

  • Sunwah PearlHồ Tràm CoastarCoastar Hồ TràmCoastar EstatesKhu dân cư Nguyễn BìnhKDC Nguyễn BìnhDự án Nguyễn BìnhNam Việt ÁNine SouthĐất Hòa XuânĐất nền Hòa XuânDat Hoa XuanDat nen Hoa Xuan