ورود یا ثبت‌نام
وبمستران طلایی

نمایش تاریخ میلادی با WP Jalali و مشکل سئو؟!

تاریخ میلادی با WP Jalali

وقتی وردپرس فارسی رو دانلود و نصب می‌کنید. افزونه قدیمی wp jalali بصورت پیشفرض روی سایت شما نصب می‌شه. اما مشکل بزرگی که این افزونه داره، نمایش همزمان تاریخ میلادی و شمسی هست. یعنی یا باید کل تاریخ‌ها شمسی باشه یا میلادی!! پس بریم برای نمایش تاریخ میلادی با WP Jalali

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

اما در هر صورت هنوز در عجبم که چرا تیم وردپرس فارسی هنوز هم با آپدیت وردپرس، این افزونه رو بروز‌رسانی نکردند و اگر قصد آپدیت ندارند حداقل اون رو با Parsi Date جایگزین کنند!

پارسی‌دیت رو هم که می‌شناسید. یکی از بهترین افزونه‌های شمسی ساز وردپرس هست که توسط دوستان خوبم در تیم وردپرس پارسی ساخته شده.

اما مشکل افزونه ParsiDate چیست؟

در هر صورت هر افزونه‌ای مشکلات خودش رو داره و برنامه‌نویس بی عیب خداست. تا قبل از نوروز ۱۳۹۸ روی میهن وردپرس از پارسی دیت استفاده می‌کردیم. اما نسخه جدید پارسی دیت با اینکه مشکل نمایش تاریخ شمسی رو قبل از عید امسال حل کرد اما یک مشکل جدید رو به نمایش گذاشت! مشکل عدم پشتیبانی از تابع the_modified_time که برای سایت ما و خیلی از کاربران وردپرسی مشکلات زیادی رو ایجاد کرد.

البته این مورد رو @glastir توی انجمن وردپرس اعلام کردن. منتظر پاسخ تیم وردپرس پارسی هستیم.

و اما استفاده از WP Jalali

سعی کردیم این موضوع رو قبول کنیم که باید از همان افزونه قدیمی وردپرس جلالی استفاده کنیم. البته با کمی تغییرات. چون بصورت پیشفرض وردپرس جلالی یک گزینه در اختیار شما قرار می‌ده که بتونید با استفاده از اون، تاریخ کل وردپرس رو شمسی کنید. این موضوع مشکلات زیادی در بخش گزارشات افزونه EDD و ووکامرس و … ایجاد خواهد کرد.

همچنین مشکل بسیار بزرگ این گزینه این هست که متادیتا‌هایی که باید به گوگل بصورت w3c time نمایش داده بشه رو بصورت شمسی با اعداد فارسی نمایش خواهد داد که خودش کلی داستان برای سئو ایجاد می‌کنه. پس بعد از نصب افزونه وردپرس جلالی باید این گزینه رو غیر فعال کنیم:

تاریخ تمامی بخش‌های وردپرس از میلادی به شمسی تبدیل شود.

این گزینه باید غیر فعال شود!

نمایش تاریخ میلادی با WP Jalali

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

خب تاریخ میلادی که بدون مشکل در سایت شما نمایش داده میشه. اما با غیر فعال کردن این گزینه، عملا چرا افزونه وردپرس جلالی نصب شده؟! مگر قرار نیست تاریخ شمسی رو توی بخش‌های مختلفی از سایت نمایش بدیم؟ اینجاست که باید دست به کد بشیم و کمی با توابع این افزونه کار کنیم.

نمایش تاریخ شمسی در WP Jalali

برای نمایش تاریخ شمسی باید از تابع jdate افزونه جلالی استفاده کنیم. یعنی با استفاده از این تابع زمان رو بگیریم و نشون بدیم. پس شروع می‌کنیم به نوشتن یک تابع اختصاصی برای نمایش زمان. وارد فایل functions.php قالب بشید و این کد رو به انتهای فایل قبل از ?> قرار بدید.

// jalali date by www.mihanwp.com
function get_jdate_publish_time(){
	$greg_date = get_post_time('d F Y');
	$timestamp = strtotime($greg_date);
	if ( function_exists('jdate') ) {
		echo jdate('d F Y',$timestamp);
	} else {
		echo $greg_date;
	}
}

توضیح کد بالا:

ابتدا یک تابع به نام get_jdate_publish_time ساختیم. توی این تابع اعلام کردیم که توی متغیر greg_date تاریخ پست رو بگیر. سپس با استفاده از تابع strtotime، تاریخ قابل خوندن برای انسان رو به تاریخ قابل خوندن برای کامپیوتر تبدیل کن و در نهایت اگر jdate روی سایت فعال بود. (یعنی افزونه وردپرس جلالی فعال بود) این تاریخ رو بصورت جلالی خروجی بگیر و echo کن.

حالا باید وارد فایل single.php یا هر جایی از سایتتون که قصد دارید اونجا تاریخ رو نمایش بدید شده و این کد رو به جای تابع get_post_time قرار بدید.

<?php get_jdate_publish_time();?>

نمایش تاریخ آپدیت پست بصورت شمسی

برای نمایش تاریخ آپدیت پست، باید همین تابع رو مجدد با نام دیگری بسازیم. با این تفاوت که به جای get_post_time از get_post_modified_time استفاده می‌کنیم.

function get_jdate_update_time(){
	$greg_date = get_post_modified_time('d F Y');
	$timestamp = strtotime($greg_date);
	if ( function_exists('jdate') ) {
		echo jdate('d F Y',$timestamp);
	} else {
		echo $greg_date;
	}
}

حالا به جای modified_time از get_post_modified_time استفاده می‌کنیم. یعنی در فایل single.php از این کد برای نمایش تاریخ آپدیت پست استفاده می‌کنیم.

<?php get_jdate_update_time();?>

به همین راحتی! موفق و پیروز و وردپرسی باشید.

راستی! برای دریافت مطالب وردپرسی در کانال تلگرام میهن وردپرس عضو شوید.

پیشنهادات آموزشی ما

همه پکیج های آموزشی
23 نظر ارسال شده. شخص بعدی شما باشید.

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

  1. معصومه ۰۹ بهمن ۱۳۹۸

    عاااااااااااااااااااالی

    پاسخ دادن
  2. ehsanfotoo39 ۱۲ مهر ۱۳۹۸

    سلام
    کدهایی که دادید فقط برای انتشار پست و آپدیت پست هست. اگر بخواهیم یک تاریخ معمولی مثلاً 2019/10/04 را به شمسی تبدیل کنیم ، باید از چه کدی استفاده کنیم؟

    پاسخ دادن
    • تیم پشتیبانی ۱۳ مهر ۱۳۹۸

      با سلام
      از همین کد ها استفاده بفرمایید و هر جا که خواستید نمایش دهید

      پاسخ دادن
      • ehsanfotoo39 ۱۳ مهر ۱۳۹۸

        این کدها برای تاریخ انتشار و تاریخ آپدیت پشت است.
        در قالب آریان ، در قسمت کامنتش ، تاریخ به صورت 2019/10/04 نمایش داده میشود. میخواهم این تاریخ را شمسی کنم.

        پاسخ دادن
        • تیم پشتیبانی ۱۳ مهر ۱۳۹۸

          برای این مورد هم میتونید از این کدها استفاده کنید

          پاسخ دادن
  3. pasokhkadeh93 ۲۱ شهریور ۱۳۹۸

    سلام
    افزونه پارسی دیت هنوز، تاریخ آپدیت پست را نمایش نمی دهد؟

    پاسخ دادن
    • رضا حسینی راد ۲۱ شهریور ۱۳۹۸

      سلام خیر متاسفانه

      پاسخ دادن
  4. ehsanfotoo39 ۱۰ شهریور ۱۳۹۸

    سلام
    این مشکل فقط برای تاریخ شمسی است؟ برای تاریخ قمری مشکلی وجود دارد یا خیر؟

    پاسخ دادن
    • تیم پشتیبانی ۱۱ شهریور ۱۳۹۸

      سلام
      فقط برای تاریخ شمسی هست.

      پاسخ دادن
  5. davod473 ۰۴ خرداد ۱۳۹۸

    سلام امکانش هست برای قالب فلت سام اموزشش رو بذارید؟

    پاسخ دادن
    • رضا حسینی راد ۰۴ خرداد ۱۳۹۸

      سلام خیر متاسفانه چون برای تک تک قالب‌ها نمی‌تونیم این آموزش رو بذاریم. پیشنهاد می‌کنم اگر نیازی به تابع آپدیت پست ندارید از افزونه parsi date استفاده کنید.

      پاسخ دادن
      • davod473 ۰۴ خرداد ۱۳۹۸

        چرا به اونم نیاز دارم

        پاسخ دادن
        • تیم پشتیبانی ۰۴ خرداد ۱۳۹۸

          اگر نیاز دارید پس باید تابع رو تغییر بدید. پیشنهاد می‌کنیم به یک برنامه نویس بسپارید.

          پاسخ دادن
  6. davod473 ۰۴ خرداد ۱۳۹۸

    سلام من نمیتونم پیدا کنم فایل ها رو ممنون میشم برای فلت سام راهنمایی کنید

    پاسخ دادن
    • رضا حسینی راد ۰۴ خرداد ۱۳۹۸

      سلام برای قالب فلت سام باید دنبال این کد در زیر پوشه‌ها باشید معمولا توی قالب‌های حرفه‌ای پیدا کردنش باید توسط نرم افزار ویرایش کد و search in directory انجام بشه.

      پاسخ دادن
  7. سامان غلامی ۰۲ خرداد ۱۳۹۸

    سلام.
    بسیار مطلب جالب و مفیدی بود.
    متشکرم

    پاسخ دادن
  8. davod473 ۰۲ خرداد ۱۳۹۸

    سلام ممنون میشم بگین تو فلت سام ادرس این فایل ها با همین توضیحات یکی هستن یا خیر؟

    پاسخ دادن
    • رضا حسینی راد ۰۲ خرداد ۱۳۹۸

      سلام توی هر قالبی متفاوت هست. باید دنبال کد publish time بگردید.

      پاسخ دادن
  9. مهدی ۰۱ خرداد ۱۳۹۸

    استاد یعنی ما برای اینکه سئو به مشکل نخوره تاریخ میلادی رو به گوگل نمایش میدیم ولی با این کد تاریخ تبدیل به شمسی میشه و کاربر میبینه ؟

    پاسخ دادن
    • رضا حسینی راد ۰۲ خرداد ۱۳۹۸

      بله دقیقا

      پاسخ دادن
  10. محمد ۰۱ خرداد ۱۳۹۸

    بسیار عالی

    پاسخ دادن
  11. Arashdel71 ۰۱ خرداد ۱۳۹۸

    سلام
    قالب من مکس شاپ هستش get_post_time این تابع رو چجوری پیدا کنم و جایگزین کنم؟؟؟

    پاسخ دادن
    • رضا حسینی راد ۰۱ خرداد ۱۳۹۸

      سلام باید توی کدهای قالب بخش template parts دنبالش بگردید.

      پاسخ دادن