Trang chủ » Kiến thức - Chia sẻ » Đếm lượt xem bài viết và truy vấn hiển thị không cần plugin

Đếm lượt xem bài viết và truy vấn hiển thị không cần plugin

Hiện tại có rất nhiều plugin hỗ trợ việc đếm lượt xem và hiển thị lượt xem bài viết, nhưng dùng nhiều plugin sẽ gây nặng cho web khiến tốc độ load chậm đi, điều này sẽ không tốt cho SEO cũng như trải nghiệm của người dùng.

Một vài đoạn code đơn dưới đây sẽ giúp bạn giải quyết được những vấn đề trên.

Đếm và hiển thị lượt xem bài viết

Thêm code vào file functions.php

Bạn mở file functions.php trong thư mục theme, sau đó thêm đoạn code dưới đây vào cuối file và lưu lại. 2 hàm này sẽ giúp đếm và lấy về lượt xem bài biết.

// Set View.
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);
    }
}
// Get 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";
    }
    return $count;
}

Chèn code đếm và hiển thị lượt xem

– Để đếm được lượt xem thì bạn cần phải gọi hàm đếm lượt xem đã khởi tạo trong file functions.php. Dùng đoạn code sau thêm vào đầu trang chi tiết.

Quảng cáo
<?php setPostViews(get_the_ID()); ?>

– Hiển thị lượt xem bằng cách thêm đoạn code sau vào vòng lặp, nơi bạn muốn hiển thị.

<?php getPostViews(get_the_ID()); ?>

Hiển thị số lượt xem bài viết trong admin

Để tiện theo dõi số lượt xem bài viết, bạn có thể thêm đoạn code dưới đây vào file functions.php, sẽ hiển thị số lượt xem cụ thể của từng bài.

// Show post view in admin.
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ị những bài viết có lượt xem nhiều nhất

Chèn đoạn code sau vào nơi bạn muốn hiển thị những bài viết được xem nhiều.

<?php 
$args = array(
    'post_type' => 'post',
    'posts_per_page' => 8,
    'orderby'     => 'meta_value_num',
    'meta_key'    => 'post_views_count',
    'order'       => 'DESC',
    'post_status' => 'publish',
);
$post_view = new WP_Query($args);
if($post_view->have_posts()): while($post_view->have_posts()) : $post_view->the_post(); ?>
    // Code template Html.
<?php endwhile;  wp_reset_postdata(); endif; ?>

Trên là chia sẻ một số đoạn code mình hay dùng trong quá trình viết theme. Nếu bạn sử dụng có bất kỳ vấn đề gì thì hãy comment ở dưới, mình sẽ cập nhật và hỗ trợ.

Bình luận
Bài viết liên quan

    Đăng ký để nhận ngay ưu đãi tốt nhất

    Banner register