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

2.7 / 5. تعداد رای: 3

تاریخ میلادی با 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();?>

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

نکته خاصی هست که این مقاله رو تکمیل‌تر کنه؟

  1. U334306 ۱۱ آذر ۱۴۰۲

    ممنون از شما بابت آموزش جالب و منحصربفردتون.
    من در قالب جنه، فایل Function.php رو در مسیر قالب (فولدر چایلد – که فعال هست) پیدا کردم.
    اما
    ۱- فایل Single.php در فولدر چایلد نیست؛ در فولدر اصلی قالب هست.
    ۲- در فایل Single.php کد get_post_time نیست.
    وقتی در هسته‌ی وردپرس گشتم، در فایل general-template.php در آدرس wpcore\wp-includes\ تونستم این چند خط رو پیدا کنم:

    Line 2580: $the_date = get_post_time( $_format, false, $post, true );
    Line 2705: $the_time = get_post_time( $_format, false, $post, true );

    حالا باید همین کدها در همین فایل رو «با روش این مقاله» جایگزین کنم؟
    یعنی به جای فایل Single باید از این فایل general-template استفاده کنم؟ یا باید یک Single.php بسازم؟ یا راه‌حل دیگه‌ای هست؟

    • Reza Rad رضا راد ۱۱ آذر ۱۴۰۲

      سلام وقت بخیر هسته وردپرس رو تغییر ندین. باید ببینید کجای قالب get post time استفاده شده شاید توی فایل های پوشه های زیر مجموعه باشه.

      • U334306 ۱۱ آذر ۱۴۰۲

        ممنون از پاسخ‌تون
        من تلاش کردم با پشتیبانی میهن وردپرس ارتباط بگیرم، ولی چون محصولی نخریدم، گزینه‌ای برای ارسال تیکت ندارم در داشبوردم.
        می‌خواستم بپرسم اگر این کار رو بصورت یک پروژه انجام می‌دین [که همین تنظیمات روی سایت من انجام بدین] هزینه‌ش چقدر می‌شه.
        سپاس

        • تیم پشتیبانی تیم پشتیبانی ۱۲ آذر ۱۴۰۲

          درود
          متاسفانه ما این خدمات رو انجام نمیدیم و پشتیبانی سایت هم فقط برای افرادی هست که از ما محصول خریداری کرده باشند

  2. U10966 ۲۶ دی ۱۴۰۱

    سلام
    روز بخیر من از wp-jalali استفاده میکردم و الان از هیچ پلاگینی استفاده نمیکنم. اعداد و تاریخ های سایتم هم چنان فارسی هستند، فقط موردی که هست اینکه تو نتایج گوگل کنار محتوا های من تاریخ زده و با اپدیت محتوا هم این تاریخ به روز نمیشه.
    قالب من فلت سام هست و خیلی سال پیش از شما خریدم و بخاطر مسائل اپدیت مجبور شدم از شرکت دیگه بگیرم، ممنون میشم راهنمایی بفرمایید.

    • Reza Rad رضا راد ۲۷ دی ۱۴۰۱

      سلام روز بخیر. باید کدهای قالب رو تغییر بدید و تاریخ محتوا رو به گوگل معرفی کنید. تو دوره سایت برتر آموزشش دادم.

  3. U10840 ۸ اسفند ۱۴۰۰

    سلام آقای حسینی راد
    من از قالب آوادا استفاده میکنم ولی از دو قالب آوادا یکی اونی که از شما گرفتم دیگری هم از سایت دیگه بخاطر سرعت بروز رسانی بیشتر هم مال شمارا استفاده میکنم ولی وقتی مال سایت دیگر را نصب میکنم تاریخی که در نتایج گوگل نمایش داده میشه تاریخ بروزرسانی است ولی قالب شما را نصب میکنم تاریخ انتشار در نتایج گوگل نمایش داده میشه اشکال از کجا است ؟ میخواهم تاریخ بروزرسانی درنتایج نمایش داده بشه در تنظیمات قالب هم روشن کردم این گذینه را

    • Reza Rad رضا راد ۱۴ اسفند ۱۴۰۰

      سلام وقت بخیر. اگر توی تنظیمات قالب مشخص کردید نباید مشکلی باشه. افزونه‌های کش رو غیرفعال و تست کنید یا کش رو خالی کنید.

  4. U43037 ۲۴ شهریور ۱۴۰۰

    کار میکنه مثل هلو
    ممنون

  5. U40436 ۱۷ خرداد ۱۴۰۰

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

    • Reza Rad رضا راد ۱۷ خرداد ۱۴۰۰

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

  6. U21585 ۲۰ اردیبهشت ۱۳۹۹

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

    • تیم پشتیبانی تیم پشتیبانی ۲۰ اردیبهشت ۱۳۹۹

      سلام
      شما باید از هاست بخواهید Display Errors را از طریق فایل php.ini فعال کنند.

      بعد از فعالسازی display error باید از فایل منیجر هاستتان فایل wp-config.php را ویرایش کنید و طبق آموزش زیر مقدار wp_debug را true کنید.

      https://mihanwp.com/wp-debug/

      • U21585 ۲۱ اردیبهشت ۱۳۹۹

        سلام
        مواردی که فرموده بودید انجام دادم ولی پیام خطا میده

        Parse error: syntax error, unexpected ‘<', expecting end of file in /home/abgova/domains/abgovara.com/public_html/wp-content/themes/flatsome/functions.php on line 33
        یک خطای مهم در وب سایت شما رخ داده است.

        دربارهٔ اشکال‌زدایی در وردپرس بیشتر بدانید.

        • تیم پشتیبانی تیم پشتیبانی ۲۱ اردیبهشت ۱۳۹۹

          یک مرتبه قالب و افزونه ها و وردپرس سایت خود را از طریق هاست آپدیت دستی کنید

  7. U21585 ۲۰ اردیبهشت ۱۳۹۹

    سلام وقت بخیر
    کدی که برای شمسی کردن تاریخ نوشته در سایت، گذاشتید من طبق مراحلی که گفتید درانتهای فایل functions.php قرار میدم روی سایت اعمال نمیکنه و خطای وردپرس میده و کلا سایت دیگه بالا نمیاد لطفا راهنمایی کنید.ممنون

  8. U21585 ۱۵ اردیبهشت ۱۳۹۹

    سلام وقت بخیر
    در قالب فلت سام، فایل functions.php قالب ندارم به چه عنوان دیگری هست؟

  9. U13636 ۹ اردیبهشت ۱۳۹۹

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

  10. U27210 ۷ اردیبهشت ۱۳۹۹

    با سلام.
    نظرتان در مورد افزونه persian date چیست؟

  11. U6192 ۳ اردیبهشت ۱۳۹۹

    سلام. من از افزونه WP Jalali و قالب جنه استفاده میکنم
    مشکل من اینه که: وقتی یه پستی را زمانبندی میکنم برای مثال ساعت 04:00 ب.ظ و روی گزینه «زمانبندی» کلیک میکنم. خود به خود ساعتش تغیر میکنه.
    و یه سوال دیگه: امکانش هست تاریخ قسمت زمانبندی ها در ویرایشگر وردپرس را شمسی کرد؟ با همین افزونه

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

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

      • U6192 ۴ اردیبهشت ۱۳۹۹

        خیر قالب را از شما خریداری نکردم. سوال بنده نیز در رابطه با افزونه WP Jalali بود؟ مشکلی هم با قالب سایت ندارم

        • تیم پشتیبانی تیم پشتیبانی ۴ اردیبهشت ۱۳۹۹

          ۱. افزونه های سایت را غیر فعال کرده و تست کنید. ببینید حل میشه یا خیر
          ۲. بله افزونه شمسی سازی نصب کنید اکثر بخش های وردپرس شمسی خواهد شد.

  12. کاربر مهمان ۱۰ بهمن ۱۳۹۸

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

  13. U6469 ۱۲ مهر ۱۳۹۸

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

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

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

      • U6469 ۱۳ مهر ۱۳۹۸

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

  14. U5807 ۲۱ شهریور ۱۳۹۸

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

  15. U6469 ۱۱ شهریور ۱۳۹۸

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

  16. U10966 ۴ خرداد ۱۳۹۸

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

    • Reza Rad رضا راد ۴ خرداد ۱۳۹۸

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

  17. U10966 ۴ خرداد ۱۳۹۸

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

    • Reza Rad رضا راد ۴ خرداد ۱۳۹۸

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

  18. U576 ۲ خرداد ۱۳۹۸

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

  19. U10966 ۲ خرداد ۱۳۹۸

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

  20. U9570 ۲ خرداد ۱۳۹۸

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

  21. کاربر مهمان ۱ خرداد ۱۳۹۸
  22. U3694 ۱ خرداد ۱۳۹۸

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