Hướng dẫn kiểm soát lượt xem bài viết trong theme Soledad

Vấn đề gặp phải với bộ đếm truy cập theme Soledad

Khi sử dụng theme Soledad cho WordPress, bạn sẽ thấy theme có sẵn chức năng đếm lượt xem bài viết. Tuy nhiên, theo mặc định, hệ thống này:

  • Đếm cả người dùng đã đăng nhập (admin, editor…)
  • Đếm cả bot tìm kiếm như Googlebot, Bingbot
  • Tăng view mỗi lần reload trang, kể cả khi không phải lượt truy cập thực

Điều này khiến số liệu bị thổi phồng, không phản ánh đúng mức độ quan tâm thực sự của người đọc. Nếu bạn đang xây dựng hệ thống bài viết phổ biến, hoặc dùng lượt xem để đánh giá nội dung, thì việc kiểm soát hệ thống đếm view là rất cần thiết. Bởi vậy, hãy cùng CodecungAI xử lý vấn đề này nhé.

Từng kiểm soát bộ đếm view của theme Soledad

1. Cơ chế hoạt động của hệ thống đếm view

Theme Soledad tích hợp sẵn chức năng đếm lượt xem bài viết thông qua hàm penci_set_post_views($postID). Cơ chế hoạt động gồm:

  • Khi người dùng truy cập bài viết, theme gọi hàm penci_set_post_views() để tăng số lượt xem.
  • Số lượt xem được lưu vào meta field của bài viết trong cơ sở dữ liệu (post_meta).
  • Theme có thể hiển thị số lượt xem bằng penci_get_post_views($postID) hoặc dùng để sắp xếp bài viết phổ biến.

Vị trí gọi hàm

Hàm penci_set_post_views() thường được gọi trực tiếp trong file single.php của theme, hoặc thông qua AJAX nếu tùy chọn đó được bật.

2. Cách kiểm soát lượt xem hiệu quả

Bước 1: Ghi đè hàm penci_set_post_views() trong child theme

Tạo hoặc mở file functions.php trong child theme và thêm đoạn sau:

if (!function_exists('penci_set_post_views')) {
	function penci_set_post_views($postID) {
		if (is_user_logged_in() || wp_is_bot()) {
			return; // Không đếm view nếu là người dùng đã đăng nhập hoặc bot
		}

		$count_key = penci_get_postviews_key();
		$count = get_post_meta($postID, $count_key, true);
		if ($count == '') {
			$count = 0;
			delete_post_meta($postID, $count_key);
			add_post_meta($postID, $count_key, $count);
		} else {
			++$count;
			update_post_meta($postID, $count_key, $count);
		}
	}
}

function wp_is_bot() {
	$bots = array('Googlebot', 'Bingbot', 'Slurp', 'DuckDuckBot', 'YandexBot', 'Baiduspider');
	$agent = $_SERVER['HTTP_USER_AGENT'] ?? '';
	foreach ($bots as $bot) {
		if (stripos($agent, $bot) !== false) {
			return true;
		}
	}
	return false;
}

Bước 2: Kiểm tra theme có cho phép ghi đè không

Mở file functions.php của theme gốc và kiểm tra xem hàm penci_set_post_views() có được bọc trong if (!function_exists(...)). Nếu có, bạn có thể ghi đè như trên.

Gợi ý tính năng mở rộng

Sau khi kiểm soát được hệ thống đếm view, bạn có thể phát triển thêm các tính năng sau:

Tính năngMô tả
🔥 Bài viết phổ biếnHiển thị top bài viết theo lượt xem (ngày, tuần, tháng)
📊 Biểu đồ thống kêVẽ biểu đồ lượt xem bằng Chart.js hoặc Google Charts
🎯 Badge tự độngGắn nhãn “Hot”, “Top tuần” lên bài viết có lượt xem cao
📥 Thông báo cho tác giảGửi email khi bài viết vượt mốc lượt xem
🧹 Ẩn bài viết ít viewTự động ẩn bài viết có lượt xem thấp sau X ngày
🔎 Bộ lọc bài viếtCho phép người dùng lọc theo lượt xem cao/thấp

Công cụ hỗ trợ

  • Query Monitor: Kiểm tra hàm nào đang được gọi, giúp debug dễ dàng.
  • Advanced Custom Fields (ACF): Tạo giao diện hiển thị view trong admin.
  • WP Cron hoặc Action Scheduler: Tự động xử lý thống kê theo lịch.

Kết luận

Việc kiểm soát lượt xem không chỉ giúp bạn có dữ liệu chính xác mà còn mở ra nhiều cơ hội để tăng tương tác, tối ưu nội dung và cải thiện trải nghiệm người dùng. Theme Soledad đã cung cấp nền tảng tốt, và bạn hoàn toàn có thể mở rộng theo cách riêng của mình.

Nếu bạn muốn mình giúp viết widget hiển thị top view, tạo shortcode, hoặc tích hợp biểu đồ thống kê, mình sẵn sàng đồng hành cùng bạn!

Xem thêm: Thêm chức năng xóa bài viết là xóa ảnh cho website WordPress

Rate this post
Chia sẻ tới bạn bè và gia đình
kiendinh
kiendinh

Đinh Hùng Kiên là một người đam mê công nghệ, từng “thử sức” với các ngôn ngữ lập trình như C++ và C#, trước khi rẽ hướng sang lĩnh vực Marketing. Với nền tảng tư duy logic từ lập trình và kinh nghiệm triển khai thực tế trong ngành, Kiên mang đến những góc nhìn độc đáo về cách kết nối giữa kỹ thuật và chiến lược truyền thông số.
Nhờ sự hỗ trợ mạnh mẽ từ các công cụ AI như ChatGPT và Gemini, Kiên thường xuyên chia sẻ những đoạn code hữu ích, mẹo tối ưu website, và kiến thức marketing thực chiến — đặc biệt dành cho những người không chuyên đang muốn xây dựng thương hiệu cá nhân hoặc doanh nghiệp nhỏ.
Kiên là người sáng lập codecungai.com, một nền tảng thân thiện giúp người dùng WordPress biến ý tưởng thành hiện thực mà không cần biết lập trình. Với triết lý “giải mã công nghệ bằng ngôn ngữ đời thường,” Kiên mong muốn tạo ra một cộng đồng nơi mọi người đều có thể học hỏi, sáng tạo và phát triển.

Bài viết: 26
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
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
0
Rất thích suy nghĩ của bạn, hãy bình luận.x