شمسی ساز تاریخ وردپرس با افزونه blue persian date و بدون افزونه

(نویسنده) | آخرین بروزرسانی: 18 مهر 1404

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

 

  1. روش کدنویسی مستقیم در قالب: یک قطعه کد PHP استاندارد برای الحاق دستی در فایل‌های قالب (`single.php` و `page.php`). (نکته مهم: این روش مستلزم جایگذاری مجدد کد پس از هر به‌روزرسانی قالب است).
  2. روش افزونه بسیار سبک و اختصاصی: یک افزونه تک‌فایلی و کم‌حجم که با استفاده از هوک‌های وردپرس، سازگاری کامل با قالب‌های سنتی و مدرن (بلوکی/FSE)را ارائخ می‌کند و ریسک حذف کد را از بین می‌برد.

 

هسته اصلی این راه‌حل از الگوریتم استاندارد و متن‌باز تبدیل تاریخ جلالی استفاده می‌کند. این کد برای نمایش سه بخش مهم بهینه‌سازی شده است:

  1. تاریخ انتشار پست: جهت نمایش زمان اولیه تولید محتوا.
  2. تاریخ آخرین بروزرسانی: یک سیگنال مهم سئویی (SEO) برای موتورهای جستجو و کاربران، که تازگی و اعتبار محتوا را نشان می‌دهد.
  3. تاریخ دیدگاه‌ها: جهت نمایش زمان تعامل کاربران با محتوا.

 

روش با افزونه: تغییر تاریخ به شمسی با افزونه blue-persian-date

نصب و راه‌اندازی

این افزونه یک افزونه تک‌فایلی است و نصب آن بسیار ساده است:

  • فایل blue-persian-date.php را دانلود کنید.
  • یک پوشه در مسیر wp-content/plugins/ ایجاد کنید و اسم آنرا blue-persian-date بگذارید.
  • فایل را در مسیر wp-content/plugins/blue-persian-date وب‌سایت وردپرسی خود آپلود کنید.
  • از طریق پنل مدیریت وردپرس (بخش افزونه‌ها)، افزونه با عنوان نمایش تاریخ شمسی را فعال کنید.

 

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

 

مزایای این افزونه

حداکثر بهینه‌سازی سرعت: افزونه صرفا یک فایل PHP با کد تبدیل خالص است و هیچ CSS، JavaScript، یا بخش تنظیمات اضافی ندارد. تاثیر آن بر عملکرد سایت تقریبا صفر است.
سازگاری جامع با قالب‌ها: با استفاده از هوک‌های پیشرفته وردپرس (date\_i18n و render\_block)، این افزونه با تمام قالب‌های سنتی و مدرن (Block/FSE) سازگاری کامل دارد.
پوشش دهی کامل تاریخ‌ها: تبدیل خودکار و کامل تاریخ‌های زیر در سمت کاربر (Frontend):
تاریخ انتشار پست‌ها و برگه‌ها.
تاریخ آخرین بروزرسانی (ضروری برای سئوی محتوا).
تاریخ ارسال دیدگاه‌ها (Comments Date).
پایداری در به‌روزرسانی: به دلیل عدم دستکاری فایل‌های اصلی قالب، به‌روزرسانی قالب یا هسته وردپرس، تغییری در عملکرد افزونه ایجاد نخواهد کرد.

 

صفحه افزونه در گیت هاب

 

روش بدون افزونه: تغییر تاریخ به شمسی در فایل single.php و page.php

برای تغییر تاریخ «آخرین بروزرسانی»، باید فایل single.php یا page.php وردپرس را باز کنید و کد زیر را جایگزین کد تاریخ فعلی کنید. توجه داشته باشید که این کد زیر باید داخل حلقه وردپرس و مثلا بعد از <?php the_title(); ?> یا بعد از <?php the_content(); ?> قرار بگیرد.

 

<!-- ========== شروع کد تبدیل تاریخ به شمسی ========== -->
<?php
if (is_singular() && in_the_loop() && is_main_query()) {

// --- تابع استاندارد برای تبدیل تاریخ میلادی به شمسی ---
if (!function_exists('blue_gregorian_to_jalali')) {
function blue_gregorian_to_jalali($gy, $gm, $gd) {
$g_d_m = array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334);
$gy2 = ($gm > 2) ? ($gy + 1) : $gy;
$days = 355666 + (365 * $gy) + floor(($gy2 + 3) / 4) - floor(($gy2 + 99) / 100) + floor(($gy2 + 399) / 400) + $gd + $g_d_m[$gm - 1];
$jy = -1595 + (33 * floor($days / 12053));
$days %= 12053;
$jy += 4 * floor($days / 1461);
$days %= 1461;
if ($days > 365) {
$jy += floor(($days - 1) / 365);
$days = ($days - 1) % 365;
}
$jm = ($days < 186) ? 1 + floor($days / 31) : 7 + floor(($days - 186) / 30);
$jd = 1 + (($days < 186) ? ($days % 31) : (($days - 186) % 30));
return array($jy, $jm, $jd);
}
}
// --- پایان تابع ---

$final_date_string = ''; 
$modified_timestamp = get_the_modified_time('U');

if ($modified_timestamp) {
$g_year = date('Y', $modified_timestamp);
$g_month = date('m', $modified_timestamp);
$g_day = date('d', $modified_timestamp);

list($j_year, $j_month, $j_day) = blue_gregorian_to_jalali($g_year, $g_month, $g_day);

if($j_year > 1300) {
$persian_months = array("فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند");
$j_month_name = $persian_months[$j_month - 1];
$final_date_string = $j_day . ' ' . $j_month_name . ' ' . $j_year;
} else {
$final_date_string = get_the_modified_date('F j, Y');
}
} else {
$final_date_string = get_the_modified_date('F j, Y');
}

// نمایش خروجی نهایی تاریخ
echo "<div style='font-size: 13px; color: #555; margin-bottom: 10px; text-align: right;'>آخرین بروزرسانی: " . esc_html($final_date_string) . "</div>";
}
?>
<!-- ========== پایان کد تبدیل تاریخ به شمسی ========== -->

 

نکته مهم: توجه داشته باشید که در صورت آپدیت قالب، ممکن است صفحات page.php و single.php بازنویسی شوند و باید دوباره باید این کدها را قرار بدهید.

 

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

 

اجرای کدهای بهینه، نیازمند زیرساخت پایدار است!

شما اکنون با پیاده‌سازی این کدهای بهینه، نقشه راه کامل برای رسیدن به یک سایت وردپرسی فوق‌سریع را در دست دارید. اولین قدم برای عملکرد بهتر، انتخاب یک زیرساخت با کیفیت است. سرورهای مجازی ما با سخت‌افزار NVMe و مجازی‌ساز KVM، دقیقا همان سکوی پرتابی هستند که سایت بهینه شما برای اوج گرفتن نیاز دارد.

مشاهده سرورها و خرید VPS



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