Tính thời gian đọc bài viết với PHP

Thời gian đọc ước tính (reading time) là một yếu tố nhỏ nhưng hữu ích để cải thiện trải nghiệm người dùng và tăng khả năng giữ chân độc giả. Với chỉ vài dòng PHP, bạn có thể dễ dàng hiển thị thời gian đọc cho từng bài viết trong WordPress nhờ vào hàm get_estimated_reading_time().

Tính thời gian đọc bài viết với PHP

Hàm get_estimated_reading_time() làm gì?

Hàm này nhận nội dung bài viết, đếm số từ, sau đó chia cho tốc độ đọc trung bình để ước tính số phút người dùng cần để đọc hết bài. Mặc định, tốc độ đọc được giả định là 200 từ/phút – một con số phổ biến trong các công cụ như Medium hoặc Yoast.

“Thêm chỉ số thời gian đọc giúp người dùng quyết định nhanh hơn có nên đọc bài viết hay không.”

Cấu trúc hàm

function get_estimated_reading_time($post_id = null, $wpm = 200) {
    $post_id = $post_id ?: get_the_ID();
    $content = get_post_field('post_content', $post_id);
    $word_count = str_word_count(strip_tags($content));
    $minutes = ceil($word_count / $wpm);
    return $minutes;
}
  • $post_id: ID của bài viết muốn tính thời gian đọc (nếu không truyền, sẽ dùng bài viết hiện tại).
  • $wpm: Tốc độ đọc, mặc định là 200 từ/phút.
  • Hàm sử dụng get_post_field() để lấy nội dung bài viết, loại bỏ HTML bằng strip_tags() và đếm số từ với str_word_count().

Cách sử dụng trong theme

Ví dụ muốn hiển thị thời gian đọc trong template (như single.php hoặc trong custom loop), bạn chỉ cần gọi:

<p><span uk-icon="clock"></span> 
Thời gian đọc: <?php echo get_estimated_reading_time(); ?> phút</p>

Bạn cũng có thể tùy chỉnh tốc độ đọc theo đối tượng người dùng, ví dụ:

echo get_estimated_reading_time(null, 180); // tốc độ đọc chậm hơn

Khi nào nên dùng hàm này?

  • Trên các trang blog, bài viết dài
  • Trong danh sách bài viết nổi bật (cùng với số lượt xem, thời gian đăng,…)
  • Trên AMP hoặc phiên bản mobile để giúp người dùng ra quyết định nhanh hơn

Bạn có thể xem demo tại trang tin tức truyện tranh này, ở mỗi bài viết sẽ có ước tính thời gian đọc.

Mẹo nâng cao

  • Kết hợp với icon hoặc biểu tượng đồng hồ (UIkit hỗ trợ sẵn với uk-icon) để trực quan hơn.
  • Có thể lọc bài viết ngắn/dài theo thời gian đọc để tạo các block như “Bài viết đọc dưới 3 phút”.

Kết luận

Chỉ với một hàm ngắn gọn, get_estimated_reading_time() mang lại giá trị UX thực tế cho website WordPress của bạn. Đây là một trong những “tiện ích nhỏ nhưng có võ”, đáng để thêm vào bất kỳ theme hoặc plugin tùy chỉnh nào.

Nếu bạn đang xây dựng một blog cá nhân, tạp chí hoặc trang nội dung dài – đừng quên hiển thị thời gian đọc để giúp người dùng cảm thấy bài viết “vừa sức” hơn ngay từ cái nhìn đầu tiên!

Bình Luận


  • Không có bình luận.