Đếm lượt xem bài viết không cần plugin trong wordpress

Đếm lượt xem bài viết không cần plugin trong wordpress

Đếm lượt xem bài viết trong wordpress

Đoạn code dưới đây sẽ giúp bạn đếm lượt xem bài viết không cần sử dụng plugin. Chỉ cần vài đoạn code đơn giản ? Chú ý code dưới đây hỗ trợ cho các bạn sử dụng cache thoải mái nha. Không phải lo lắng vấn đề không đếm lượt xem bài viết khi sử dụng cache nữa

Đếm lượt xem bài viết không cần plugin trong wordpress
Đếm lượt xem bài viết không cần plugin trong wordpress

Thêm vào file functions.php

Hàm dưới đây giúp bạn lấy lượt xem và đếm lượt xem của 1 post nào đó. Trong đó có sử dụng ajax để có thể đếm lượt view khi sử dụng cache. Chèn code vào file functions.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
function getPostViews($postID, $is_single = true){
   global $post;
   if(!$postID) $postID = $post->ID;
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if(!$is_single){
        return '<span class="svl_show_count_only">'.$count.' Views</span>';
    }
    $nonce = wp_create_nonce('devvn_count_post');
    if($count == "0"){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return '<span class="svl_post_view_count" data-id="'.$postID.'" data-nonce="'.$nonce.'">0 View</span>';
    }
    return '<span class="svl_post_view_count" data-id="'.$postID.'" data-nonce="'.$nonce.'">'.$count.' Views</span>';
}
function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count == "0" || empty($count) || !isset($count)){
        add_post_meta($postID, $count_key, 1);
        update_post_meta($postID, $count_key, 1);
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}
add_action( 'wp_ajax_svl-ajax-counter', 'svl_ajax_callback' );
add_action( 'wp_ajax_nopriv_svl-ajax-counter', 'svl_ajax_callback' );
function svl_ajax_callback() {
    if ( !wp_verify_nonce( $_REQUEST['nonce'], "devvn_count_post")) {
        exit();
    }
    $count = 0;
   if ( isset( $_GET['p'] ) ) {
      global $post;
      $postID = intval($_GET['p']);
      $post = get_post( $postID );
      if($post && !empty($post) && !is_wp_error($post)){
         setPostViews($post->ID);
         $count_key = 'post_views_count';
          $count = get_post_meta($postID, $count_key, true);
      }
   }
   die($count.' Views');
}
add_action( 'wp_footer', 'svl_ajax_script', PHP_INT_MAX );
function svl_ajax_script() {
   if(!is_single()) return;
   ?>
   <script>
   (function($){
      $(document).ready( function() {
         $('.svl_post_view_count').each( function( i ) {
            var $id = $(this).data('id');
            var $nonce = $(this).data('nonce');
            var t = this;
            $.get('<?php echo admin_url( 'admin-ajax.php' ); ?>?action=svl-ajax-counter&nonce='+$nonce+'&p='+$id, function( html ) {
               $(t).html( html );
            });
         });
      });
   })(jQuery);
   </script>
   <?php
}

Cách sử dụng

Chèn code sau vào trong vòng lặp while() chỗ bạn muốn hiển thị lượt view hoặc bất kỳ chỗ nào kèm theo ID bài viết cụ thể

1
2
3
4
5
6
//Trong vòng lặp while của file single. Cái này vừa hiển thị vừa có chức năng đếm lượt xem
echo getPostViews(get_the_ID());
//Chèn ở bất kỳ chỗ nào nhưng yêu cầu có ID bài viết cụ thể vd
echo getPostViews(12); // Hiển thị số lượt views của bài viết với ID của bài viết là 12
//Cách hiển thị số lượt xem mà không đếm lượt xem, thường dùng ở widget hoặc trang chủ hoặc trang archive
echo getPostViews(get_the_ID(), false);

Thêm hiển thị số lượt xem bài viết trong admin

Đếm lượt xem bài viết không cần plugin trong wordpress
Đếm lượt xem bài viết không cần plugin trong wordpress

Bạn chèn code này vào file functions.php nhé

1
2
3
4
5
6
7
8
9
10
11
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
function posts_column_views($defaults){
    $defaults['post_views'] = __( 'Views' , '' );
    return $defaults;
}
function posts_custom_column_views($column_name, $id){
    if( $column_name === 'post_views' ) {
        echo getPostViews( get_the_ID(), false);
    }
}

Truy vấn để hiển thị các bài viết có lượt views nhiều nhất.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$q = new WP_Query(array(
    'post_type'         =>  'post',
    'posts_per_page'    =>  5,
    'meta_key'          =>  'post_views_count',
    'orderby'           =>  'meta_value_num',
    'order'             =>  'DESC'
));
if($q->have_posts()):
    echo '<ul>';
    while ($q->have_posts()):$q->the_post();
        echo '<li>' . get_the_title() . ' - ' . getPostViews( get_the_ID(), false) . '</li>';
 endwhile;
 echo '</ul>';
endif; wp_reset_query();

Chúc các bạn thành công^^

 

theo : https://levantoan.com/dem-luot-xem-bai-viet-khong-can-plugin/

Đánh giá post
87 / 100

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 *

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.