اولین آموزش وبلاگ من اختصاص داره به افزونه محبوب wp-parsidate که ممکن خیلی از شما با اون آشنا باشید، اما برای اون دسته از کاربرانی که با این افزونه آشنا نیستن می تونم اینطور توضیح بدم که اگه تصمیم دارید سایتی به زبان پارسی داشته باشید این افزونه یکی از الزامات سایت شما خواهد بود، در واقع مهم ترین ماموریت این افزونه تبدیل تاریخ میلادی به خورشیدی ( جلالی ) هستش ، اما این تنها ویژگی اون نیست و شما می تونید فهرستی از ویژگی های مفید این افزونه رو در زیر مشاهده کنید :
- تغییر زبان مدیریت سایت به زبان پارسی
- تغییر زبان سایت به زبان پارسی
- تغییر تاریخ میلادی به خورشیدی ( جلالی )
- تغییر اعداد لاتین به اعداد پارسی در :
- در عنوان صفحه
- در عنوان نوشته ها
- در محتوای نوشته ها
- در خلاصه نوشته ها
- در محتوای دیدگاه ها
- در نمایش تعداد دیدگاه ها
- در دسته بندی ها
- در نمایش تاریخ ها
- تصحیح حروف عربی به حروف پارسی
- تبدیل تاریخ در پیوندهای یکتا
- استفاده از فونت زیبای «Droid Arabic Naskh» برای بخش مدیریت و ویرایشگر متن
- تصحیح قیمت ها در افزونه ووکامرس
- تصحیح قیمت ها و جایگزین کردن “ریال” با Rial در افزونه Easy Digital Downloads
بنابراین برای داشتن یک سایت وردپرس پارسی شما فقط نیاز دارید که وردپرس رو از مخزن اصلی اون ( درست اینجا ) دانلود کنید و سپس افزونه wp-parsidate رو از مخزن وردپرس دانلود و نصب کنید، پس از اون فقط کافیه از بخش تنظیمات این افزونه، گزینه های تغییر زبان مدیریت و تغییر زبان سایت رو فعال کنید. به این ترتیب می تونید از وردپرس پارسی لذت ببرید.
پارسی دیت برای تغییر زمان از چه قلاب هایی بهره میگیرد ؟!
افزونه پارسی دیت به کمک ۵ فیلتر ( add_filter ) و یک اکشن ( add_action ) قادر هستش که زمان رو در توابع استاندارد وردپرسی تغییر بده، برای روشن شدن موضوع بهتره مثالی بزنم، به طور مثال اگه شما پوسته ای داشته باشید و در حلقه ای از تابع the_date استفاده کنید، پارسی دیت به کمک قلاب the_date خروجی نمایش این تابع رو تغییر خواهد داد، اگر خروجی تابع در حالتی که افزونه پارسی دیت نصب نیست به این صورت ( August 10, 2016 ) باشه، پس از نصب پارسی دیت به این شکل ( مرداد ۲۰, ۱۳۹۵ ) تغییر پیدا خواهد کرد، به این ترتیب پارسی دیت قادر هستش تا نمایش تاریخ در هر پوسته یا افزونه ای که از تابع the_date استفاده می کند رو به تاریخ خورشیدی برگردونه.
فیلتر های زیر تحت تاثیر افزونه پارسی دیت هستن البته در شرایطی که گزینه های مربوطه در بخش تنظیمات اونها فعال باشن، همچنین توابع مربوط به این قلاب ها، همنام با قلاب مربوطه هستن، برای نمونه قلاب the_date مربوط به تابعی با همین نام هستش.
- the_date
- the_time
- get_comment_time
- get_comment_date
- get_post_modified_time
- date_i18n
- برای قلاب کردن به این فیلتر افزونه پارسی دیت اشتباهی از add_action استفاده کرده که امیدوارم در نسخه های بعدی این افزونه اصلاح بشه
اگه پوسته یا افزونه شما از قلاب ها ( یا توابعی با همین نام ) در بالا استفاده می کنه، می تونید مطمئن باشید که خروجی اون تابع با استفاده از افزونه پارسی دیت از میلادی به خورشیدی تغییر خواهد کرد.
نکته برای تیم وردپرس پارسی : همینطور که در توضیح بالا اشاره شد افزونه پارسی دیت از ۶ قلاب برای تبدیل زمان میلادی به خورشیدی استفاده می کنه، اما سوالی که پیش میاد اینه که آیا واقعا پارسی دیت به این ۶ قلاب نیاز داره یا نه ؟! شاید بشه کاری کرد که پارسی دیت تنها با یک قلاب همون خروجی رو بگیره !!!
بیاید نگاهی بندازیم به هسته چندتا از توابعی که در بالا فهرست شد، برای نمونه از تابع the_date شروع می کنیم، این تابع در هسته خودش از تابع get_the_date برای گرفتن زمان استفاده می کنه، حالا بیاید نگاهی به هسته تابع get_the_date بندازیم، این تابع هم خودش از تابع mysql2date برای تبدیل زمان با فرمت mysql به زمان بومی بهره میگیره و حالا اگه نگاهی به هسته تابع mysql2date
بندازیم می بینیم که خود این تابع با استفاده از تابع date_i18n زمان رو بومی سازی می کنه.
حالا اگه همین روش رو برای توابع دیگه مانند the_time, get_comment_time, get_comment_date و غیره بکار بگیریم ، می بینیم که در هسته تمام توابع از تابع date_i18n استفاده شده، بنابراین ما تنها با یک قلاب می تونیم تمام توابع رو از میلادی به خورشیدی تغییر بدیم. اما برای اینکه مطمئن بشیم، من هسته افزونه پارسی دیت رو در آدرس /wp-parsidate/includes/fixes-dates.php
دستکاری می کنم و به جز قلاب date_i18n تمام قلاب های دیگرو غیر فعال می کنم.
global $wpp_settings;
if ( $wpp_settings['persian_date'] != 'disable' ) {
// add_filter( 'the_time', 'wpp_fix_post_time', 10, 2 );
// add_filter( 'the_date', 'wpp_fix_post_date', 10, 2 );
// add_filter( 'get_comment_time', 'wpp_fix_comment_time', 10, 2 );
// add_filter( 'get_comment_date', 'wpp_fix_comment_date', 10, 2 );
// add_filter( 'get_post_modified_time', 'wpp_fix_post_date', 10, 2 );
add_action( 'date_i18n', 'wpp_fix_i18n', 10, 3 );
}
و حالا پوسته خودم رو بررسی می کنم و می بینم بدون این قلاب ها و فقط به کمک قلاب date_i18n تاریخ میلادی در پست ها و دیدگاه های من به تاریخ خورشیدی تبدیل می شه، و این معنیش اینه که ما نیازی به بقیه قلاب ها نداریم. 🙂
افزونه wp-parsidate برای توسعه دهنده گان
اگر چه امکاناتی که این افزونه در اختیار ما قرار میده به تنهایی برای یک وبلاگ ساده کفایت می کنه، اما گاهی شما به عنوان یک توسعه دهنده تصمیم دارید با استفاده از قلاب ها تغییراتی در افزونه هاتون بدید و یا اینکه تصمیم دارید شرت کدها یا تمپلت هایی بسازید، برای نمونه شاید پوسته ای دارید که برای نمایش تاریخ میلادی از توابع استاندارد وردپرس مانند the_date, the_time, ...
استفاده نمی کنه بنابراین به نظر میرسه راهی وجود نداره تا افزونه پارسی دیت به اون بخش قلاب بشه و تاریخ میلادی رو به خورشیدی تبدیل کنه، به این ترتیب ما چاره ای نداریم به جز دستکاری پوسته ( البته به روش استاندارد ).
در هسته افزونه پارسی دیت دو تابع قدرتمند وجود داره که این امکان رو به ما میده تا به کمک اونها بتونیم بصورت دستی زمان میلادی رو به خورشیدی و زمان خورشیدی رو به میلادی تبدیل کنیم.
تبدیل تاریخ میلادی به شمسی توسط تابع parsidate
این تابع زمان میلادی به زمان شمسی ( جلالی ) رو برگردان می کنه و ۳ آرگومان ورودی داره که به این ترتیب هستش:
$input
- فرمت ورودی زمان که برای نمونه شبیه به این
'Y-m-d'
یا هر فرمت دیگه ای که در تابع استاندارد date پشتیبانی شود.
$datetime
- زمان ورودی به میلادی که می تونه به صورت timestamp یا بصورت رشته ای و با هر فرمت دیگه ای که توسط تابع strtotime پشتیبانی شود.
$lang
- مقدار این آرگومان اگه برابر با ‘per’ باشه، تابع
parsidate
اعداد لاتین رو به اعداد پارسی برگردان می کند.
بهتره مثالی بزنم، برای نمونه من فرض رو بر این میگیرم که شما تصمیم دارید زمان ثبت نام یک کاربر رو در پروفایل خودش به صورت تاریخ شمسی ( خورشیدی ) نمایش بدید. برای اینکار ابتدا با استفاده از تابع get_user_by()
و تنها با داشتن ایمیل کاربر می تونیم به کلاس WP_User دسترسی پیدا کنیم. خروجی این کلاس یک آبجکت از نقش ها، توانایی ها و اطلاعات مربوط به هر کاربر خواهد بود و ما برای این مثال تنها به پروپرتی data
از این کلاس نیاز داریم که شامل تمام اطلاعات مورد نیار ما از جدول wp_user موجود در دیتابیس هستش.
پس از اون با استفاده از پروپرتی user_registered
که دارای تاریخ ثبت نام کاربر در دیتابیس هستش و به کمک تابع parsidate()
می تونیم براحتی زمان میلادی رو به شمسی تبدیل کنیم، من در کدهای زیر به شما نشون میدم که چطور اینکارو انجام بدید :
############ Persian to Georgerian ################
$user = get_user_by( 'email', 'test@yahoo.com' );
if( $user ){
$user_data = $user->data;
$user_registered = $user_data->user_registered; // 2016-07-19 14:06:44
print_r( parsidate("Y-m-d H:s:d", $user_registered , 'eng') ); // 1395-04-29 14:44:29
echo "<br />";
print_r( parsidate("Y-m-d H:s:d", $user_registered ) ); // ۱۳۹۵-۰۴-۲۹ ۱۴:۴۴:۲۹
echo "<br />";
}
برای اینکه ما از یک تابع خارجی برای پوستمون استفاده می کنیم و ممکن کاربر ما افزونه پارسی دیت رو نصب و فعال نکرده باشه بنابراین برای احتیاط باید با استفاده از تابع پی اچ پی function_exists
اطمینان پیدا کنیم که تابع مورد نظرمون موجود هستش، اما طبق توضیحاتی که پیشتر گفتم زمانی که افزونه پارسی دیت فعال هستش به صورت خودکار قلاب date_i18n
رو تحت تاثیر قرار میده که این قلاب در هسته تابعی با همین نام هستش و همینطور در هسته تابع mysql2date
هم ایفای نقش می کنه، بنابراین می تونیم بجای استفاده از تابع parsidate
از تابع mysql2date
استفاده کنیم و همینطور نیازی به استفاده از تابع function_exists
هم نیستش، نمونه رو در کد زیر می تونید ببینید و توجه داشته باشید که من فرمت نمایش تاریخ رو تغییر دادم :
if( function_exists('parsidate') ){
print_r( parsidate("F j, Y", $user_registered ) ); // تیر ۲۹, ۱۳۹۵
echo "<br />";
}
// OR
print_r( mysql2date("F j, Y", $user_registered ) ); // تیر ۲۹, ۱۳۹۵
echo "<br />";
تبدیل تاریخ شمسی به میلادی توسط تابع gregdate
این تابع زمان شمسی به زمان میلادی رو برگردان می کنه و ۲ آرگومان ورودی داره که به این ترتیب هستش:
$input
- فرمت ورودی زمان که برای نمونه شبیه به این
'Y-m-d'
یا هر فرمت دیگه ای که در تابع استاندارد date پشتیبانی شود.
$datetime
- زمان ورودی به شمسی اما با حروف لاتین که در ۳ بخش روز، ماه و سال پشتیبانی خواهد شد، مانند :
"1395-05-21"
یا "1395/05/21"
کارایی این تابع بر خلاف ذهنیتی که ممکن شما از اون داشته باشید می تونه بارها بیشتر از تابع parsidate
باشه، خصوصا در ایجاد شرت کدها، بطور مثال تصور کنید که کاربری با استفاده از یک شرت کد تصمیم داره تنها نوشته های امروز یا دیروز رو در برگه ای از سایتش نمایش بده، ورودی اطلاعات می تونه با یک datepicker
پارسی و توسط کاربر به صورت شمسی وارد بشه تا کاربر راحتتر زمان رو انتخاب کنه، اما نتیجه باید بر اساس میلادی از دیتابیس استخراج بشه، بنابراین ابتدا زمان شمسی و با حروف لاتین از کاربر گرفته میشه و با استفاده از تابع gregdate
به زمان میلادی تبدیل و سپس نتیجه با استفاده از کوئری از دیتابیس دریافت میشه.
کدها همیشه بهتر از واژه ها حرف برای گفتن دارن، بنابراین این مثال می تونه به درک بهتر مطلب کمک کنه، من تصمیم دارم با استفاده از کلاس WP_Query
و با پارامتر date_query اینکارو برای شما انجام بدم، اما فرض رو بر این میگیرم که شما شرت کد رو ساختید و زمان رو ( به شمسی ) از کاربر دریافت کردید ( البته به لاتین ) ، زمان دریافتی شما می تونه شبیه به این "1395-05-20"
یا این "1395/05/20"
باشه به این ترتیب ما نیاز به دو تابع پی اچ پی داریم تا زمان دریافتی رو تکه تکه و سپس در متغیرهای مربوطه مقداردهی کنه، من از explode برای تبدیل رشته به آرایه و از list برای تبدیل آرایه به متغیرها استفاده می کنم و نتیجه کار می تونه این شکلی باشه :
############ Georgerian to Persian ################
$input_date = "1395-05-20";
if( function_exists('gregdate') ) {
$input_date = gregdate( "Y-m-d", $input_date ); // 2016-08-10
}
list( $year, $month, $day ) = explode( "-", $input_date ); // $year = 2016; $month = 08 ; $day = 10
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => array(
array(
'year' => $year,
'month' => $month,
'day' => $day,
)
),
);
$query = new WP_Query( $args );
if( $query->have_posts() ): while( $query->have_posts() ): $query->the_post();
?>
<h3><?php the_title(); ?></h3>
<?php
endwhile; wp_reset_postdata();
endif;
این کوئری عنوان نوشته هایی رو در خروجی نمایش میده که مربوط به تاریخ "1395-05-20"
هستش، شما می تونید از پارامترهای دیگه استفاده کنید و تغریبا بدون محدودیت در هر بازه زمانی نوشته یا پست سفارشی خودتون رو از دیتابیس دریافت کنید. مثلا نوشته هایی مربوط به یک هفته یا یک ماه گذشته. 🙂
ایجاد یک آرشیو ( بایگانی ) با استفاده از تابع wp_get_parchives
اگه تصمیم دارید در وبلاگتون بخشی رو به عنوان بایگانی نوشته هاتون داشته باشید می تونید از این تابع مفید استفاده کنید، تابع wp_get_parchives
در واقع با اقتباس از تابع وردپرسی wp_get_archives ایجاد شده و شما می تونید با استفاده از این تابع یک بایگانی به صورت سالانه، ماهانه و یا روزانه ایجاد کنید.
این تابع یک آرگومان به صورت رشته یا آرایه ای از پارامترهارو در ورودی خودش میگیره :
$args
- رشته ای از پارامترها مانند
"type=yearly&show_post_count=true"
و یا آرایه ای از پارامترها مانند array('type'=>'yearly', 'show_post_count' => true )
- پارامتر ها
- type – نوع نمایش بایگانی بصورت سالانه، ماهانه و روزانه.
- yearly – سالانه
- monthly – ماهانه
- daily – روزانه
- show_post_count – در صورتی که مقدار این پارامتر برابر true باشه، تعداد پست ها بصورت عددی کنار بایگانی نمایش داده میشه.
- format – فرمت یا قالبی برای نمایش لیست بایگانی
- html – نمایش بایگانی با برچسبهای
<li></li>
و پشتیبانی از پارامتر های before
و after
- option – نمایش بایگانی بصورت فهرست بازشونده ( dropdown ) با برچسبهای
<option></option>
- link – نمایش با برچسب
<link />
و مفید برای head
- custom – نمایش بصورت سفارشی با پشتیبانی از پارامترهای
before
و after
- before – مکانی برای درج متن یا برچسب قبل از لینک در فرمت های
html
و custom
- after – مکانی برای درج متن یا برچسب بعد از لینک در فرمت های
html
و custom
- order – متاسفانه این پارامتر در این تابع کارایی نداره و باید منتظر بروزرسانی های بعدی تیم وردپرس پارسی باشیم.
- echo – متاسفانه این پارامتر در این تابع کارایی نداره و باید منتظر بروزرسانی های بعدی باشیم.
- limit – به نظر میرسه تیم وردپرس پارسی یادشون رفته باشه این پارامتر رو هم در کوئری مربوطه قرار بدن، بنابراین فعلا کارایی نداره، باید منتظر بروزرسانی های بعدی باشیم.
همینطور که مشاهده کردید چندتا از پارامترهای این تابع مفید در حال حاضر غیر فعال هستن و همچنین یک پارامتر جاش اینجا خالیه که در تابع اصلی وردپرس یعنی wp_get_archives
موجود هستش، اونم پارامتر post_type
هست که کاربر به کمک اون می تونه دقیقا مشخص کنه که خروجی بایگانیش مربوط به چه نوع پستی باشه و تنها محدود به نوشته ها نباشه.
من یک نمونه از کارایی این تابع رو بهتون نشون میدم و بعدش خودتون می تونید بیشتر باهاش بازی کنید و به دلخواه خودتون آرشیو درست کنید، شما می تونید از این تابع در تمپلت هایی مثل archive.php
در پوسته هاتون استفاده کنید و یا اگه تصمیم داریم افزونه بسازید می تونید از اون در شرت کدها استفاده کنید، در اینجا من تصمیم دارم با استفاده از این تابع یک بایگانی بصورت لیست غیرعددی و با فرمت custom
ایجاد کنم :
############# Create Custom Archive by wp_get_parchives #################
echo "<ul id='khosroblog-archive' class='daily-archive' >" ;
wp_get_parchives( array(
"type" => "daily",
"show_post_count" => true,
"format" => 'custom',
"before" => "<li class='archive-item' >",
"after" => "</li>"
) );
echo "</ul>";
و خروجی کد شبیه به این میشه :
و در پایان :
خوب من فکر می کنم این اولین مقاله ای باشه که تا امروز، افزونه wp-parsidate رو از نگاه حرفه ای تری بررسی کرده و شاید خیلی از شماها در مورد کارایی توابع افزونه پارسی دیت تا امروز اطلاعی نداشتید، حالا شما می تونید با دید بازتری شروع به یکپارچه کردن افزونه ها و پوسته های خودتون با این افزونه مفید بکنید. 🙂
منتظر مقاله های بعدی من باشید و با من در تماس باشید و ایده ها و دیدگاه هاتون رو با من در میون بذارید، همچنین لطفا به کپی رایت احترام بذارید و از محتوای این مقاله جای دیگه ای استفاده نکنید، احتمالا خیلی نکات وردپرسی مفید هست که من می تونم به شما آموزش بدم، بنابراین با نقض کپی رایت من رو دلسرد نکنید. 🙂
پارسا
8 سال پیش
ممنون هادی برای نوشتت
اما در جواب ایرادی که وارد شد باید گفت، فیلتر برروی توابع مادر و تغییر خروجی باعث مشکل در برنامهها/افزونهها/پوستههای دیگر میشه
مثلا ووکامرس از همین زمان استفاده میکنه و در صورت خورشیدی بودن با مشکل مواجه میشه
هادی خسروجردی
8 سال پیش
ممنون پارسا جان برای دیدگاهت . 🙂
در مورد قلاب
date_i18n
باید بگم اون همین الان هم بصورت کامل فعال هستش، ما فقط قلاب های تو در تو رو از بین می بریم و فقط اجازه می دیم همین قلاب فعال باشه. برای پارسی سازی تاریخ ها در همه بخش ها و حتی افزونه ها و پوسته های وردپرسی باید از همین قلاب استفاده بشه، چون تغریبا هر تابعی که در خروجی خودش تاریخ داشته باشه این قلاب اونجا نقش داره.اگر چه حرفت کاملا درسته و ممکن گاهی مشکلاتی بوجود بیاره، اما چون این تابع بخشی از توابع Template Tags هستش، بنابراین بیشتر در خروجی کارایی داره، مگر زمانی که یک افزونه یا پوسته تصمیم داشته باشه از اون در یک
MySql Query
استفاده بکنه، چیزی شبیه به این :خروجی کد درست کار نمی کنه، چون تابع
mysql2date
تحت تاثیر افزونه wp-parsidate قرار میگیره و مقدار متغیر$date
رو به تاریخ پارسی تبدیل می کنه، بنابراین کوئری با مشکل روبرو میشه ، حالا برای اینکه این مشکل رو حل کنیم کافیه به تابعmysql2date
یک آرگومان دیگه با مقدارfalse
اضافه کنیم، به این ترتیب خروجی تابع بصورت خام چاپ میشه و افزونه پارسی دیت روش تاثیر نمی ذاره :البته راه دیگه ای هم وجود داره، اونم حذف قلاب از تابع date_i18n با استفاده از تابع
هستش، برای مثال کد بالارو میشه به این شکل هم نوشت :
remove_filter
این در مواردی کارایی داره که کوئری از تابعی به غیر از
mysql2date
استفاده کرده و ما دستمون به کوئری نمی رسه و فقط از دور تابع پارسی ساز رو غیر فعال و بعد از کوئری دوباره فعال می کنیم. 🙂علی قنبری
7 سال پیش
مهندس من از افزونه WPML استفاده میکنم خواستم سایتم دو زبانه باشه اما هردو زبان شمسی ولی با این تفاوت ک زبان اول نام ماه و روز و سالش کُردی کنم ولی نمیدانم چرا با نصب این افزونه کل سایتمو شمسی میکنه و غیر قابل تغییر !
هادی خسروجردی
7 سال پیش
افزونه پارسی دیت بعد از نصب علاوه بر تغییر تاریخ میلادی به شمسی، بخش مدیریت و زبان سایت رو هم به پارسی تغییر میده، شما می تونید برای غیر فعال کردن این ویژگی به بخش تنظیمات پلاگین رجوع کنید و تیکهای مربوط به “تغییر زبان مدیریت” یا “تغییر زبان سایت” رو ، روی غیرفعال تنظیم کنید.
آدرس مربوط به تنظیمات پارسی دیت :
/wp-admin/admin.php?page=wp-parsi-settings
به این ترتیب تنها تاریخ شمسی فعال باقی می مونه و زبان سایت به زبانی که در پلاگین WPML تعریف کردید برگردان میشه.
رضا
7 سال پیش
سلام خسته نباشید . برای سازگاری این افزونه با سایر افزونه ها باید چه کرد ؟
در این افزونه فقط هماهنگی با ایزی دیجیتال و ووکامرس رو داره!
چجوری باید با افزونه های دیگه ست کرد ؟
تا اعدادشون فارسی بشه
لطفاً کاملاً ابتدایی توضیح بدید ، ممنون …
هادی خسروجردی
7 سال پیش
رضا جان مقاله به صورت تغریبا ابتدایی در مورد همین موضوع بود. اینکه شما چطور بتونید این افزونه رو با سایر افزونه ها یا پوسته ها یکپارچه سازی کنید.
pooyan
7 سال پیش
سلام ببخشید من یه مشکلی دارم ،
وقتی کسی که گوشیش آیفون باشه چون کیبورد فارسی نداره ، حروف “ک” و “ی” عربی تایپ میشه مثلا اگر کلمه “پرودي” رو جستجو کنه ، هیج محصولی پیدا نمیشه ! ولی اگر “پرودی” سرج کنه پیدا میشه !
ممنون میشم راهنمایی کنید
هادی خسروجردی
7 سال پیش
سلام، اگه منظورتون جستجو داخل سایتتون هست، شاید بهترین راهکار این باشه که شما با استفاده از یک اسکرپیت js قبل اینکه کاربر جستجو رو انجام بده، حروف عربی رو به پارسی تبدیل کنید و بعد جستجو رو انجام بدید.
Pooyan
7 سال پیش
ممنون از راهنماییتون ، ولی میشه یه کم بیشتر راهنمایی کنین ! دقیقا چه کاری باید انجام بدم ؟
هادی خسروجردی
7 سال پیش
شما می تونید با استفاده از یک اسکریپت مثل Persian.js قبل اینکه کاربر جستجویی رو انجام بده حروف عربی رو به پارسی تبدیل کنید، به این ترتیب مشکل جستجو داخل سایتتون حل میشه :
کد html مربوط به جستجوگر سایت شما می تونه شبیه این باشه :
و کد جاوا اسکریپت شما می تونه شبیه این باشه :
قبل اینکه از کد بالا استفاده کنید مطمئن بشید Persian.js رو در هدر سایتتون قرار داده باشید. من این کد رو تست نکردم ، امیدوارم واستون کار کنه. 🙂
Saeid
7 سال پیش
سلام آقای خسروجردی عزیز
بابت مطلب فوق العاده ای که نوشتید تشکر میکنم
فقط آیا امکان شمسی کردن datepicker هم با این افزونه هست اگر بله چطور میشه اینکار رو کرد؟
باز تشکر
هادی خسروجردی
7 سال پیش
سلام، ممنون از شما 🙂
نه متاسفانه، با این پلاگین شما می تونید فقط تو توابع php کار کنید و برای جاوا اسکرپیت با توجه به datepicker که در پروژتون استفاده شده باید دنبال پارسی ساز اون باشید، یا اگه تواناییش رو دارید خودتون اینکارو انجام بدید.
احسان رفسنجانی
7 سال پیش
سلام من از قالبی استفاده می کنم که با افزونه جلالی یا فارسی دیت تداخل داره. برای شمسی کردن تاریخ ها در داخل فایل function.php قالب و فقط استفاده از تابعی که پارسی دیت برای شمسی کردن استفاده کرده چه کاری باید انجام بدم ؟ چیزی شبیه این:
function cahgne_to_shamsi_date(){…….}
add_action(‘date_i18n’, ‘cahgne_to_shamsi_date’, 10, 3);
هادی خسروجردی
7 سال پیش
اگه تیک مربوط به تاریخ خورشیدی تو تنظیمات پارسی دیت به این آدرس
/wp-admin/admin.php?page=wp-parsi-settings
فعال باشه، بصورت پیشفرض پارسی دیت قلابdate_i18n
رو تحت تاثیر خودش قرار میده و داخل پوستتون تاریخ های میلادی رو به شمسی تبدیل می کنه و نیازی به قلاب کردن تابعی نیست.باید ببینید تداخل پوسته با پارسی دیت روی کدوم بخش اتفاق میوفته، هر جا تداخلی وجود داره بصورت دستی قبل از اینکه اون بخش اجرا بشه باید قلاب مربوطه پارسی دیت رو غیر فعال و بعد از اون کد، دوباره قلاب پارسی دیت رو اجرا کنید.( این کامنت رو بخونید ) البته این یه نمونس و باید کد پوسته رو بررسی کنید، گاهی نیاز به این کار هم ممکن نباشه و راه ساده تری وجود داشته باشه.