Sắp xếp bài viết theo lượng người xem WordPress

25 Tháng sáu, 2024

Làm thế nào để biết được số lượng người đã xem bài viết của bạn? Hay nâng cao hơn chút nữa đó chính là sắp xếp bài viết theo lượng người xem. Ở bài viết này, mình sẽ giúp bạn giải quyết vấn đề đó.

Hiển thị số người xem bài viết

Để hiển thị được số người xem bài viết, bạn copy đoạn sau vào file function.php:

// Function hiển thị số lượng người xem.
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;
}
// Function đếm số người xem.
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);
    }
}

Đoạn này bạn copy vào file single.php, hãy chắc chắn rằng bạn copy ở bên ngoài vòng lặp loop. Đoạn này có tác dụng, khi bạn vào bài viết, nó sẽ bắt đầu đếm bài viết ở file single đó. Tương tự ở page hay các post-type khác. Bạn muốn đếm xem ở trang nào, bạn copy đoạn này vất ở đầu trang đó:

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

Giờ bạn muốn hiển thị số lượng người xem bài viết, bạn chỉ cần copy đoạn sau:

<?php echo getPostViews(get_the_ID()); ?>
Bài viết này đã có 45 người xem
Bài viết này đã có 45 người xem

Sắp xếp các bài viết dựa trên số lượng người xem

Để sắp xếp, bạn cần dựa vào meta_key của lượt đếm số lượng để hiển thị bài viết từ nhiều hay ít. Đây là đoạn code để bạn dễ hiểu hơn:

<?php $loop = new WP_Query( $args = array(
    'post_type'      => 'post', // Lấy bài viết 
    'posts_per_page' => 5, // Lấy 5 bài viết
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num', 
    'order' => 'DESC', // Lấy bài viết theo thứ tự giảm dần của lượt xem
)); 
if ( $loop->have_posts() ) { ?>
    <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
        <span>
            <?php the_title() ?> có <?php echo getPostViews(get_the_ID()); ?> lượt xem
        </span>
    <?php endwhile ?>
<?php }; ?>
Kết quả
Kết quả
guest
0 Góp ý
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
Tin tức liên quan
Hướng dẫn tạo sản phẩm Woocommerce có biến thể đẹp mắt
Mình đọc bình luận thấy khá nhiều bạn kêu gặp khó khăn trong vấn đề tạo sản phẩm có biến thể, hay sản phẩm có biến thể không được...
Hướng dẫn xóa san-pham , danh-muc-san-pham trong đường dẫn sản phẩm Woocommerce
Với mặc định của Woocommerce, chi tiết sản phẩm sẽ có dạng domain/san-pham/ten-san-pham và danh mục sản phẩm sẽ ở dạng domain/danh-muc-san-pham/ten-danh-muc. Một phần đường dẫn như vậy sẽ...
Custom Plus & Minus Quantity trong Woocommerce
Như bạn đã biết thì nút thay đổi số lượng của Woocommerce để default không mấy là đẹp mắt và khiến người dùng khó tương tác trong việc thay...