شورت کد محاسبه زمان مطالعه مقاله در وردپرس

در دنیای امروز که زمان به یکی از ارزشمندترین منابع تبدیل شده است، کاربران اینترنت تمایل دارند تا از مدت زمانی که صرف مطالعه مقالات و محتواهای مختلف می‌کنند، آگاه باشند. این آگاهی به آن‌ها کمک می‌کند تا بتوانند برنامه‌ریزی بهتری داشته باشند و بهره‌وری خود را افزایش دهند. به همین دلیل، محاسبه زمان مطالعه محتوا یکی از ویژگی‌های جذاب و کاربردی در وب‌سایت‌ها و وبلاگ‌ها است. در این مقاله، یک کد بهینه‌شده و گسترش‌یافته برای محاسبه زمان مطالعه محتوا در وردپرس را بررسی خواهیم کرد. این کد نه تنها زمان مطالعه را به دقت محاسبه می‌کند، بلکه امکانات جدیدی را نیز برای شخصی‌سازی آن به کاربران ارائه می‌دهد.

در زیر کد کامل برای محاسبه زمان مطالعه یک متن در وردپرس آورده شده است. این کد به گونه‌ای طراحی شده است که می‌تواند بر اساس نیازهای مختلف کاربر، به صورت دقیق و شخصی‌سازی‌شده عمل کند.

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"]

محاسبه دقیق‌تر بر اساس جملات و پاراگراف‌ها: با اضافه کردن محاسبه تعداد جملات و پاراگراف‌ها، زمان مطالعه با دقت بیشتری محاسبه می‌شود. این رویکرد باعث می‌شود تا زمان مطالعه به واقعیت نزدیک‌تر باشد، زیرا پاراگراف‌های طولانی و جملات پیچیده‌تر ممکن است زمان بیشتری برای مطالعه نیاز داشته باشند.

سازگاری با زبان‌های مختلف: با استفاده از تنظیمات پیش‌فرض و پارامترهای ورودی، این کد به راحتی قابل تطبیق با زبان‌ها و نیازهای مختلف است.

 

محاسبه زمان مطالعه محتوای یک سایت می‌تواند تجربه کاربری را بهبود بخشد و به کاربران کمک کند تا به شکلی مؤثرتر زمان خود را مدیریت کنند. کد ارائه‌شده در این مقاله با توجه به نیازهای کاربران، بهینه‌سازی و گسترش یافته است تا دقت بیشتری داشته باشد و امکانات شخصی‌سازی بیشتری را فراهم کند. با استفاده از این کد، شما می‌توانید به راحتی زمان مطالعه را در نوشته‌های وردپرس خود نمایش دهید و تجربه کاربری بهتری را برای بازدیدکنندگان سایت خود ایجاد کنید.

بدون دیدگاه

کد های مشابه با آنچه دیدید

نتیجه‌ای پیدا نشد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed