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

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

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

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!

Load More In Web design

11 Comments

  1. Hiêu lê

    Tháng Tám 12, 2018 at 3:35 chiều

    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 ạ.!

    Reply

    • Dong

      Tháng Tám 24, 2018 at 12:58 sáng

      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ố đó.

      Reply

  2. Lê Vinh

    Tháng Bảy 10, 2018 at 7:17 sáng

    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

    Reply

    • Dong

      Tháng Bảy 15, 2018 at 11:13 sáng

      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.

      Reply

  3. NTY

    Tháng Tư 20, 2017 at 1:32 sáng

    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!

    Reply

    • Dong

      Tháng Tư 26, 2017 at 11:24 sáng

      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 🙂

      Reply

  4. Thien Y

    Tháng Tư 11, 2017 at 9:28 sá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 :((((((((

    Reply

    • Dong

      Tháng Tư 26, 2017 at 11:07 sáng

      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 🙂

      Reply

  5. ntn

    Tháng Tư 8, 2017 at 7:52 sáng

    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

    Reply

    • Dong

      Tháng Tư 9, 2017 at 8:38 sá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 😀

      Reply

      • NTN

        Tháng Tư 11, 2017 at 9:29 sáng

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

        Reply

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *