محاسبه و نمایش زمان تقریبی مطالعه نوشته در وردپرس (Reading Time)
با کد زیر تعداد کلمات متن شمرده شده و بر اساس سرعت استاندارد ۲۰۰ کلمه در دقیقه، زمان تقریبی با شورتکد `[reading_time]` چاپ میشود.
مشخصات فنی و شناسنامه کد (Code Information)
بازبینی: 1405/06/29<?php
/**
* محاسبه خودکار زمان تقریبی مطالعه بر اساس تعداد کلمات متن فارسی/انگلیسی
* نحوه استفاده: [reading_time] یا فراخوانی تابع bisco_get_reading_time() در پوسته
*/
function bisco_get_reading_time( $post_id = null ) {
$post = get_post( $post_id );
if ( ! $post ) {
return '';
}
$content = strip_shortcodes( $post->post_content );
$clean_content = wp_strip_all_tags( $content );
// شمارش کلمات برای متون فارسی و یونیکد
$word_count = count( preg_split( '/\s+/u', trim( $clean_content ) ) );
// سرعت میانگین مطالعه: ۲۰۰ کلمه در دقیقه
$reading_time = ceil( $word_count / 200 );
if ( $reading_time < 1 ) {
$reading_time = 1;
}
return sprintf( '%d دقیقه', $reading_time );
}
add_shortcode( 'reading_time', function() {
$time = bisco_get_reading_time( get_the_ID() );
return '<span class="bisco-reading-time"><i class="dashicons dashicons-clock"></i> زمان مطالعه: ' . esc_html( $time ) . '</span>';
} );
کد را کجا قرار دهیم؟ (Placement Guide)
کد را در functions.php بگذارید و در فایل single.php یا با شورتکد در متن استفاده کنید.
این کد چگونه کار میکند؟ (How it Works)
تگهای HTML و شورتکدها با توابع هسته وردپرس حذف شده و کلمات با رجکس چندبایتی شمرده میشوند و بر سرعت مطالعه تقسیم میگردند.
چه زمانی از این کد استفاده کنیم؟ (Use Cases)
در وبلاگها و مجلات خبری آنلاین برای بالا بردن تعامل خواننده.
چه زمانی نباید از این کد استفاده کنیم؟ (Anti-patterns)
در صفحات کوتاه، محصولات بدون متن بلند یا فرمهای تماس.
پیشنیازهای اجرا
وردپرس ۳.۰ به بالا.
نحوه تست و اطمینان از عملکرد
شورتکد را در یک مقاله قرار دهید؛ زمان تخمینی متناسب با حجم کلمات نمایش داده میشود.
نحوه بازگردانی سریع (Rollback)
کد را حذف کنید.
خطاهای رایج و راهحل رفع
استفاده از str_word_count که با کاراکترهای فارسی سازگار نیست (کد ما از الگوی امن یونیکد `\s+/u` استفاده میکند).
ملاحظات و نکات امنیتی
خروجی با esc_html فیلتر شده است.
تاثیر بر سرعت و پرفورمنس
پردازش در کسری از میلیثانیه بدون کوئری دیتابیس سنگین.