شمارنده تعداد بازدید پستها بدون افزونه در وردپرس (Post View Counter)
با تابع زیر در اکشن `wp_head` بازدید ثبت شده و با `[post_views]` تعداد بازدیدها نمایش داده میشود.
مشخصات فنی و شناسنامه کد (Code Information)
بازبینی: 1405/06/29<?php
/**
* سیستم سبک ثبت و نمایش تعداد بازدید پست در متای وردپرس
*/
function bisco_track_post_views() {
if ( ! is_single() ) {
return;
}
global $post;
if ( ! isset( $post->ID ) ) {
return;
}
// عدم شمارش بازدید رباتها یا پیشنمایشها
if ( is_preview() || is_robots() ) {
return;
}
$post_id = $post->ID;
$count_key = 'bisco_post_views_count';
$count = (int) get_post_meta( $post_id, $count_key, true );
if ( empty( $count ) ) {
delete_post_meta( $post_id, $count_key );
add_post_meta( $post_id, $count_key, 1 );
} else {
$count++;
update_post_meta( $post_id, $count_key, $count );
}
}
add_action( 'wp_head', 'bisco_track_post_views' );
// شورتکد نمایش بازدید
add_shortcode( 'post_views', function() {
$post_id = get_the_ID();
$count = (int) get_post_meta( $post_id, 'bisco_post_views_count', true );
return '<span class="bisco-post-views">بازدید: ' . number_format_i18n( $count ) . '</span>';
} );
کد را کجا قرار دهیم؟ (Placement Guide)
کد را در functions.php قرار داده و در فایل پوسته یا با شورتکد `[post_views]` نمایش دهید.
این کد چگونه کار میکند؟ (How it Works)
هنگامی که کاربر برگه نوشته را باز میکند، هوک wp_head متای 'bisco_post_views_count' را خوانده و یک واحد به آن میافزاید.
چه زمانی از این کد استفاده کنیم؟ (Use Cases)
برای مرتبسازی مقالات بر اساس پربازدیدترینها یا نمایش آمار خوانده شدن مطلب به کاربران.
چه زمانی نباید از این کد استفاده کنیم؟ (Anti-patterns)
در سایتهایی با کش تمامصفحه لایه Edge/CDN بدون تنظیم دور زدن کش، یا سایتهای با ترافیک میلیون بازدید در ثانیه (که نیاز به ردیس دارند).
پیشنیازهای اجرا
وردپرس ۳.۰ به بالا.
نحوه تست و اطمینان از عملکرد
یک مقاله را باز کرده و چند بار رفرش کنید؛ عدد بازدید باید افزایش یابد.
نحوه بازگردانی سریع (Rollback)
کد را حذف کنید.
خطاهای رایج و راهحل رفع
شمارش بازدید توسط رباتهای گوگل یا ادمینها که در صورت نیاز میتوان با شرط `!current_user_can('manage_options')` جلوی آن را گرفت.
ملاحظات و نکات امنیتی
ورودیها تبدیل به عدد صحیح (int) و خروجی با number_format_i18n بومیسازی شده است.
تاثیر بر سرعت و پرفورمنس
یک کوئری سبک روی جدول wp_postmeta اجرا میشود.