در دنیای امروز که زمان به یکی از ارزشمندترین منابع تبدیل شده است، کاربران اینترنت تمایل دارند تا از مدت زمانی که صرف مطالعه مقالات و محتواهای مختلف میکنند، آگاه باشند. این آگاهی به آنها کمک میکند تا بتوانند برنامهریزی بهتری داشته باشند و بهرهوری خود را افزایش دهند. به همین دلیل، محاسبه زمان مطالعه محتوا یکی از ویژگیهای جذاب و کاربردی در وبسایتها و وبلاگها است. در این مقاله، یک کد بهینهشده و گسترشیافته برای محاسبه زمان مطالعه محتوا در وردپرس را بررسی خواهیم کرد. این کد نه تنها زمان مطالعه را به دقت محاسبه میکند، بلکه امکانات جدیدی را نیز برای شخصیسازی آن به کاربران ارائه میدهد.
در زیر کد کامل برای محاسبه زمان مطالعه یک متن در وردپرس آورده شده است. این کد به گونهای طراحی شده است که میتواند بر اساس نیازهای مختلف کاربر، به صورت دقیق و شخصیسازیشده عمل کند.
function calculate_reading_time($atts = []) { // تنظیمات پیشفرض $default_speed = 150; // سرعت مطالعه به طور پیشفرض: 150 کلمه در دقیقه $default_label = 'دقیقه'; // تجزیه و تحلیل مقادیر ورودی کاربر $atts = shortcode_atts([ 'speed' => $default_speed, // امکان تعیین سرعت مطالعه از طریق شورتکد 'label' => $default_label, // امکان تعیین واحد زمان از طریق شورتکد ], $atts); // بررسی اینکه آیا در یک نوشته تک هستیم if (is_single()) { $content = get_the_content(); // حذف تگهای HTML و کوتاهسازی محتوا $clean_content = strip_tags($content); // محاسبه تعداد کلمات $word_count = str_word_count($clean_content); // محاسبه تعداد جملات (فرض بر استفاده از ".", "!", "؟" به عنوان انتهای جمله) $sentence_count = preg_match_all('/[\.!؟؟]/u', $clean_content); // محاسبه تعداد پاراگرافها $paragraph_count = substr_count($clean_content, "\n\n"); // محاسبه زمان مطالعه بر اساس کلمات، جملات و پاراگرافها $reading_time = ceil(($word_count / $atts['speed']) + ($sentence_count * 0.2) + ($paragraph_count * 0.5)); // بازگرداندن زمان مطالعه با واحد تعیین شده return $reading_time . ' ' . $atts['label']; } else { return 'لطفاً این شورت کد را در قالب نوشتهها استفاده کنید.'; } } add_shortcode('reading_time', 'calculate_reading_time');
توضیح بخشهای مختلف کد
1. تعریف تابع calculate_reading_time
تابع calculate_reading_time
اصلیترین بخش این کد است که وظیفه محاسبه زمان مطالعه را بر عهده دارد. این تابع میتواند سرعت مطالعه و واحد زمانی را از طریق پارامترهای شورتکد دریافت کند و بر اساس این ورودیها، زمان مطالعه را محاسبه کند.
2. تنظیمات پیشفرض
در ابتدای تابع، دو متغیر پیشفرض تعریف میشود:
default_speed
: سرعت مطالعه پیشفرض که 150 کلمه در دقیقه است. این مقدار معمولاً سرعت استانداردی برای مطالعه محتوای وب در نظر گرفته میشود.default_label
: واحد زمانی پیشفرض که “دقیقه” است.
3. تجزیه و تحلیل پارامترهای ورودی
تابع shortcode_atts
برای دریافت و تنظیم مقادیر ورودی از شورتکد استفاده میشود. این پارامترها به کاربران اجازه میدهد تا سرعت مطالعه (speed
) و واحد زمانی (label
) را بر اساس نیاز خود تنظیم کنند.
4. بررسی شرط is_single()
تابع is_single()
بررسی میکند که آیا صفحه فعلی یک نوشته تکی است یا خیر. این شرط به این دلیل استفاده شده است که زمان مطالعه معمولاً برای نوشتههای وبلاگ یا مقالات محاسبه میشود و نیازی به محاسبه در صفحات دیگر نیست.
5. پاکسازی محتوا
محتوای نوشته با استفاده از get_the_content()
بازیابی شده و سپس با استفاده از strip_tags
، تگهای HTML از آن حذف میشود تا تنها متن خام باقی بماند.
6. شمارش کلمات
تعداد کلمات موجود در متن با استفاده از تابع str_word_count
محاسبه میشود که یک روش سریع و دقیق برای شمارش کلمات است.
7. شمارش جملات و پاراگرافها
برای افزایش دقت در محاسبه زمان مطالعه، تعداد جملات و پاراگرافها نیز محاسبه میشود:
- تعداد جملات با استفاده از تابع
preg_match_all
که جملاتی را که با علامتهای نقطه، علامت تعجب، یا علامت سؤال پایان مییابند، میشمارد. - تعداد پاراگرافها با استفاده از تابع
substr_count
که تعداد پاراگرافهای متن را بر اساس دو خطفاصله (\n\n
) شمارش میکند.
8. محاسبه زمان مطالعه
زمان مطالعه نهایی بر اساس تعداد کلمات و ضرب آنها در سرعت مطالعه محاسبه میشود. سپس با استفاده از تعداد جملات و پاراگرافها، زمان مطالعه با دقت بیشتری تنظیم میشود. در نهایت، نتیجه با استفاده از ceil
به بالاترین عدد صحیح گرد میشود.
9. بازگشت نتیجه
تابع در نهایت زمان مطالعه را به همراه واحد زمانی به عنوان یک رشته برمیگرداند که میتواند در قالب نوشته نمایش داده شود.
10. تعریف شورتکد
با استفاده از add_shortcode
یک شورتکد با نام reading_time
ثبت میشود که به تابع calculate_reading_time
اشاره دارد. کاربران میتوانند از این شورتکد در محتوای نوشتههای خود استفاده کنند تا زمان مطالعه را نمایش دهند.
ویژگیها و خلاقیتهای اضافه شده
شخصیسازی سرعت مطالعه: با اضافه کردن پارامتر speed
، کاربران میتوانند سرعت مطالعه را بر اساس نیاز خود تنظیم کنند. این ویژگی برای سایتهایی با مخاطبان مختلف (مثلاً افراد متخصص یا غیرمتخصص) مفید است.
[reading_time speed="200"]
تغییر واحد زمانی: امکان تغییر واحد زمانی از طریق پارامتر label
فراهم شده است. این ویژگی به کاربران اجازه میدهد تا واحد زمانی دلخواه خود را مانند “minutes” یا “min” استفاده کنند.
[reading_time label="minutes"]
محاسبه دقیقتر بر اساس جملات و پاراگرافها: با اضافه کردن محاسبه تعداد جملات و پاراگرافها، زمان مطالعه با دقت بیشتری محاسبه میشود. این رویکرد باعث میشود تا زمان مطالعه به واقعیت نزدیکتر باشد، زیرا پاراگرافهای طولانی و جملات پیچیدهتر ممکن است زمان بیشتری برای مطالعه نیاز داشته باشند.
سازگاری با زبانهای مختلف: با استفاده از تنظیمات پیشفرض و پارامترهای ورودی، این کد به راحتی قابل تطبیق با زبانها و نیازهای مختلف است.
محاسبه زمان مطالعه محتوای یک سایت میتواند تجربه کاربری را بهبود بخشد و به کاربران کمک کند تا به شکلی مؤثرتر زمان خود را مدیریت کنند. کد ارائهشده در این مقاله با توجه به نیازهای کاربران، بهینهسازی و گسترش یافته است تا دقت بیشتری داشته باشد و امکانات شخصیسازی بیشتری را فراهم کند. با استفاده از این کد، شما میتوانید به راحتی زمان مطالعه را در نوشتههای وردپرس خود نمایش دهید و تجربه کاربری بهتری را برای بازدیدکنندگان سایت خود ایجاد کنید.