چند وقتیه که مشغول کار راه اندازی وبسایت حفاظت از تالاب بندر انزلی هستم. این سایت چند زبانه هست و یکی از بزرگترین مشکلاتی که داشتم عدم هماهنگی بین افزونه های WPML و WP-jalali بود. به طوری که به صورت خودکار بین تاریخ ها سوئیچ نمیشد.یعنی میخواستم در بخش انگلیسی سایت تاریخ میلادی نشون داده بشه و در بخش فارسی، تاریخ شمسی.
توی سایت ها و انجمن های مختلف فارسی هم راه حل خاصی ذکر نشده بود.
تا این که یه مقدار وقت گذاشتم و کد زیر رو نوشتم:
<?php $mylocale = get_bloginfo('language'); if($mylocale == 'fa-IR'){ add_filter('date_i18n', 'ztjalali_ch_date_i18n', 111, 4);} ?>
اگه شما هم مثل من با این مشکل روبرو شدید کافیه این چند خط کد رو به فایل function.php قالبتون اضافه کنید و در تنظیمات افزونه wp-jalali گزینه “” رو غیر فعال کنید.
یه توضیح مختصر هم در مورد این چند خط بدم:
تبدیل تاریخ میلادی به شمسی توسط فیلتری که در انتهای کد اومده انجام میشه. البته من اینو روی نسخه پنجم افزونه wp-jalali تست کردم.
حالا ما باید یه شرطی بزاریم که اگه زبان صفحه فارسی بود این فیلتر اعمال بشه. این شرط هم همون خط دوم هست. در خط اول زبان صفحه تشخیص داده میشه و با عبارت “fa-IR” مقایسه میشه. اگه برابر بود، فیلتر مورد نظرمون اعمال میشه.
با این روش امکان اعمال هر تغییری در سایت به طور جداگانه برای زبان های مختلف وجود داره. کافیه زبان مورد نظر رو در شرط مشخص کنید و به جای فیلتر هم دستورات مورد نظرتون رو قرار بدید.
خیلی عالی بود، کلی دنبالش میگشتم
مرسی
سلام
ممنون، میشه کد رو برای حالتی که میخایم صفحات خاصی تاریخشون میلادی باشه هم بنویسید؟
یا مثلا برای اینکه افزونه ی خاصی از این کد استفاده نکنه
سلام
برای اینکه صفحات خاصی تاریخشون میلادی باشه باید قسمت شرط رو تغییر بدید.
البته پیدا کردن این که از چه تابعی باید استفاده بشه همت خودتون رو میطلبه.
شاید این لینک بتونه کمکتون کنه:
https://developer.wordpress.org/reference/functions/get_permalink/
سلام
ممنون بابت کد .. اگر وب سایت زبان عربی هم داشته باشه چطور میشه این کار را انجام داد ؟؟؟
سلام
اطلاعی ندارم که وردپرس عربی هم مثل وردپرس فارسی افزونه ای برای عربی سازی داره یا نه.
سلام
من این قطعه کد رو وارد می کنم ولی وقتی آدرس سایت رو می زنم یک صفحه سفید میاد فقط.
حتما جای اشتباهی وارد میکنید.
دقت کنید که قبل از این کد
آقا خیر دو عالم ببینی
آقا من هم خیلی وقت بود این مشکل رو داشتم. الان درست شد.
بسیار ممنونم.
فوق العاده ای
سلام و تشکر بابت این کدهایی که ارائه دادید.
یک مشکل دیگه با سایتهای 2 زبانه اینچنینی دارم و جوابش رو جایی پیدا نکردم.
نام نویسنده رو یا باید فارسی بنویسیم یا انگلیسی که اگه فارسی باشه تو سایت انگلیسی هم فارسیه و اگه انگلیسی باشه تو سایت فارسی انگلیسیه. برای این مورد نظری دارید؟
مثلا بشه بگیم که ترجمه ی نام نویسنده این کلمه ست.
تشکر
سلام. تا به حال به همچین چیزی برنخوردم. هر وقت تونستم این قضیه رو بررسی میکنم.
اگر از WPML استفاده می کنید، توی String Translation می تونید ترجمه کنید احتمالا.
عالی بود
دمت گرم
سلام. از شما ممنونم دوست عزیز. آیا برای شمسی ساز پارسیدیت هم میشه از این کد استفاده کرد؟
برای پارسی دیت هم فکر کنم راهش رو پیدا کردم. از تنظیمات افزونه گزینه تاریخ جلالی رو غیر فعال میکنیم و در functions این قطعه کد رو میذاریم:
$mylocale = get_bloginfo(‘language’);
if($mylocale == ‘fa-IR’){
add_action(‘date_i18n’, ‘wpp_fix_i18n’, 10, 3);}
ممنون از این که اطلاع دادید.
عالی بود ممنون
سلام. ممنون، مشکل خیلی ها رو حل می کنه این کد.
خیلی خوبه دیگه اینطوری مشکل تاریخ ایرانی هم حل میشه
من از وردپرس انگلیسی استفاده می کنم اما زبانر سایت رو روی فارسی گذاشتم
قصد دارم دیت پیکر ووکامرس در بخش تسویه حساب رو به تاریخ شمسی تبدیل کنم
امکانش هست کد یا روش دیگه ای معرفی کنید ؟
سلام متاسفانه تا به حال با ووکامرس کار نکردم. ولی یه پروژه ای دارم که باید توش از ووکامرس استفاده کنم و تا ماه دیگه انجامش بدم. اگه به این مشکل برخورد و راه حلی براش پیدا کنم توی وبلاگ در موردش مینویسم
خیلی از شما ممنونم