چگونه با افزونه پارسی دیت ، استارت آپ های وردپرس فارسی را توسعه دهیم ؟

اگر در حال برنامه نویسی یک استارت اپ فارسی با وردپرس باشید ، یکی از نیاز های شما مسلما بحث کار با تاریخ شمسی در وردپرس هست.در بین افزونه های موجود در زمینه فارسی سازی وردپرس دو افزونه wp-jalali (افزونه جلالی) و افزونه پارسی دیت (wp-parsidate) محبوبیت زیادی نزد کاربران دارد.

در پروژه ای که برای پرتال یکی از دانشگاه های کشور مبتنی بر هسته وردپرس ایجاد کردم با کمی تحقیق افزونه ی پارسی دیت را برای این کار انتخاب کردم . در این مقاله شما را با توابع و آموزش کار با تاریخ شمسی توسط افزونه wp-parsidate در وردپرس آشنا خواهم کرد.

سرفصل های محتوا

    چه انتظاری باید از یک افزونه فارسی ساز وردپرس داشت ؟

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

    1. ابتدا فارسی سازی تمامی توابع محلی یا Native در وردپرس ، توسط فیلتر ها و اکشن هایی که وردپرس در اختیار توسعه دهندگان قرار داده.به عنوان مثال زمانی که شما افزونه را نصب می کنید تابع get_the_time به طور کامل تاریخ را بصورت شمسی برایمان نشان می دهد.این نیاز اصولا برای وبمستران وردپرس بیشتر مطرح هست.
    2. قاعدتا زمانی که شما یک پروژه ای بزرگ را با وردپرس استارت می زنید، حتما جدول هایی جدا از جدول های پیش فرض وردپرس در بانک اطلاعاتی دارید.
      سوال اینجاست با چه ابزاری میتوان تاریخ هایی که در جداول شخصی خودمان ایجاد کردیم فارسی شود ؟ این همان نیاز دوم هست یعنی افزونه باید مستنداتی را در اختیار توسعه دهنده وردپرس قرار دهد تا بتوان وردپرس فارسی را توسعه داد.

    چرا می بایست افزونه پارسی دیت را بر افزونه جلالی ترجیح دهیم ؟

    با بررسی افزونه جلالی و پارسی دیت نهایت به دلایل زیر استفاده از افزونه wp-parsidate را ترجیج دادم.

    1- بروز رسانی یک افزونه یکی از مهم ترین دلایل پیشرفت آن تلقی می شوید.
    نمی دانید وقتی برنامه نویس باشید و وارد مخزن گیت هاب یک پروژه شوید ، آخرین بروز رسانی آن را یک سال پیش ببینید این حس به شما تلقی می شود که این پروژه احتمالا متوقف شده و شخص آن را با گزینه ی بهتری جایگزین کرده.
    افزونه پارسی دیت بروز رسانی های منظمی در گیت هاب دارد و این یعنی خودش را با پیشرفت وردپرس هماهنگ کرده و نیاز های کاربران را ارتقا داده اما افزونه جلالی در یک نیاز ثابت مانده.

    مخزن گیت هاب پارسی دیت

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

    3-من در یک پروژه با فریم ورک لاراول از افزونه پارسی دیت استفاده کردم.بله درست شنیدید یکی از اصلی ترین قابلیت های افزونه parsidate مستندات آن است که به توسعه دهندگان امکان گسترش پروژه های وب فارسی از جمله وردپرس را میدهد.یک کلاس با نام bn_parsidate در این افزونه وجود دارد که این وظیفه را برعهده دارد.

    آموزش نصب افزونه پارسی دیت

    برای نصب افزونه فارسی ساز وردپرس کافیست در صفحه افزونه ها مدیریت وردپرس ، عبارت wp-parsidate را جستجو و افزونه را نصب و فعال کنید.بعد از نصب  ، یک منو با نام تنظیمات پارسی در مدیریت ایجاد می شود.
    روی آن کلیک کنید و گزینه تاریخ خورشیدی را فعال و تنظیمات را ذخیره کنید با این عملکرد تمامی تابع های اصلی وردپرس که با تاریخ سرو کار دارند از فیلتر افزونه پارسی دیت عبور کرده و در نتیجه شمسی خواهند شد.

    صفحه تنظیمات افزونه پارسی دیت

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

    فرض کنید میخواهیم تاریخ ثبت نام کاربر در وردپرس را به شمسی نمایش دهیم.در جدول wp_users فیلد user_registered تاریخ ثبت نام کاربر را با به میلادی با فرمت datetime یعنی تاریخ به همراه ساعت ثبت نام ، قرار داده است.ابتدا این مقدار را دریافت میکنیم سپس توسط تابع parsidate آن را به شمسی نمایس می دهیم :

    $user_id = 1;
    $user_data = get_userdata($user_id);
    $user_date_register = $user_data->user_registered;
    echo parsidate("Y-m-d", $register_date, "per");

    در خط دوم توسط تابع get_userdata اطلاعات پایه کاربر با شناسه 1 را از دیتابیس دریافت و در خط سوم تاریخ ثبت نام فرد را به میلادی در متغیر قرار دادیم ، و در نهایت توسط تابع parsidate آن را به شمسی تبدیل کردیم.خروجی این تابع مثلا 10-02-1398 می باشد.

    همانطوری که مشاهده میکنید تابع parsidate دارای سه پارامتر اصلی می باشد :

    1. پارامتر اول نوع نمایش خروجی تاریخ هست که بر اساس پارامتر های پیش فرض تعریف شده در تابع date زبان برنامه نویسی php هست.اگر لیست کامل این حروف و خروجی هر کدام را میخواهید لیست کامل آن در نسخه  PDF این مقاله  وجود دارد.
    2. پارامتر دوم باید تاریخ میلادی را به تابع بدهیم.که در مثال بالا متغیر تاریخ ثبت نام فرد به تابع داده شده است.دقت کنید در این تابع دیگر نیازی به strtotime کردن تاریخ نیست و این مبدل در خوده هسته ی این تابع وجود دارد.
    3. پارامتر سوم مشخص میکنیم اعدادی که قرار است به عنوان خروجی نمایش داده شود به صورت فارسی یا per باشد و یا به صورت انگلیسی یا eng.

    ایجاد شورت کد نمایش تاریخ امروز در وردپرس

    در مثال زیر یک شورت کد به نام nowdate ایجاد می کنیم.این شورت کد تاریخ امروز را در هر کجای سایت که shortcode را قرار دهید نمایش می دهد :

    function wp_nowdate() {
    	return parsidate("l j F Y", 'now', "per");
    }
    add_shortcode( 'nowdate ', 'wp_nowdate' );

    اگر در ویرایشگر وردپرس شورت کد [nowdate] را منتشر کنیم خروجی آن تاریخ همان روز به ما می باشد مثلا “دوشنبه 10 مرداد 1398”.دقت کنید که در این مثال ما بجای تاریخ میلادی تنها عبارت now را نوشتیم.

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

    اگر یک جدول دلخواه در پروژه وردپرس خود ایجاد کرده اید میتوانید از کلاس wpdb ابتدا مقدار را دریافت کنید و سپس آن را توسط تابع parsidate به شمسی تبدیل کنید.
    فرض کنید در یک پروژه دانشگاهی لیست تمامی دانشجویان  را در یک جدول به نام person قرار دادیم و یک فیلد به نام date وجود دارد که تاریخ ارائه پایان نامه آن دانشجو می باشد. برای نمایش تاریخ آن به شمسی از کد زیر استفاده میکنیم :

    global $wpdb;
    $result = $wpdb->get_row( "SELECT * FROM `".$wpdb->prefix."person` WHERE `code` = 498" );
    $person_date = $result->date;
    echo parsidate("Y-m-d", $person_date, "per");

    در مثال بالا ابتدا به یک درخواست از جدول wp_person ، اطلاعات دانشجو با کد 498 را دریافت کردیم . سپس فیلد date آن را برای شمسی سازی به تاریخ parsidate واگذار کردیم.

    توجه : اگر میخواهید روی خروجی تابع parsidate عملیاتی انجام دهید نبایستی خروجی آن را بصورت فارسی یا “per” منتشر کنید.چون کاراکتر های خروجی در این حالت بصورت رشته برای php معرفی می شود ن عدد.
    فرض کنید میخواهید سال تولد یکی از اعضا رو برگردانید و به آن 4 سال اضافه کنید و نمایش دهید .در این حالت باید حتما خروجی “eng” باشد تا php بتواند عملیات ریاضی را انجام دهد :

    $date = "2018-02-10";
    echo parsidate("Y", $date, "eng") + 4;

    در مثال بالا من خروجی تاریخ سال شمسی را به صورت eng در آوردم تا بتوانم به آن 4 عدد اضافه کنم.

    اگر کاربر افزونه پارسی دیت را نصب نکرده باشد چه می شود ؟

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

    1- اصلی ترین و استاندارد ترین روش آن است که بجای اینکه مستقیما از توابع یک افزونه داخل افزونه ی خود استفاده کنیم. بیاییم از توابع داخلی وردپرس استفاده کنیم.به عنوان مثال تابع date_i18n وظیفه ی نمایش تاریخ در فرمت دلخواه در وردپرس را بر عهده دارد.زمانی که افزونه پارسی دیت را نصب میکنید این افزونه بطور خودکار تمامی رشته هایی که توسط تابع date_i18n خروجی داده می شود را شمسی می کند.
    یعنی با این کار اگر کاربر افزونه فارسی ساز نداشت تاریخ میلادی برگشت میکند و اگر داشت تاریخ شمسی برگشت می کند.حال دوباره برمیگردیم به مثال اولی که داشتیم و آن را بدین شکل مینویسیم :

    $user_id = 1;
    $user_data = get_userdata($user_id);
    $user_date_register = $user_data->user_registered;
    echo date_i18n("Y-m-d", strtotime($register_date));

    2- میتوانید از کتابخانه TGM Plugin Activation استفاده کنید. که برای این مورد من زیاد پیشنهاد نمیکنم.
    حتما تا بحال قالبی را نصب کرده اید که بعد از نصب آن ، به طور اتوماتیک افزونه هایی مثل Contact Fotm 7 نصب شود. کتابخانه TGM دقیقا همین کار را برایتان انجام میدهد.شما میتوانید توسط ضمیمه کردن این کتابخانه به افزونه خودتان ، به وردپرس دستور بدهید بعد از نصب افزونه شما حتما افزونه wp-parsidate یا هر افزونه ای که بخواهید را نصب کند.

    3-راه حل دیگر این است که کلاس پایه افزونه parsidate که با نام bn_parsidate و در مسیر زیر در پوشه افزونه قرار دارد را ضمیمه پروژه خود کنیم. که البته من اسم این راه حل رو میزارم راه حل اورژانسی.همان طور که گفتم این کلاس bn_parsidate را میتوانید حتی در پروژه های غیر وردپرس هم استفاده کنید.

    wp-parsidate/includes/parsidate.php

    خوب من ابتدا این فایل را داخل پروژه خود قرار میدهم اما قبلش باید چک کنم که کاربر این افزونه را نصب کرده هست یا خیر تا در عملکرد php اختلال ایجاد نشود. برای این کار میتوانید از دو کد زیر استفاده کنید :

    /* Check Exist function is_active_plugin */
    if ( ! function_exists( 'is_plugin_active' ) ) {
    	include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
    }
    
    /*Check Wp-parsidate Plugin is Active*/
    if ( is_plugin_active( 'wp-parsidate/wp-parsidate.php' ) ===false) {
      include_once( 'parsidate.php' );
    }

    در وردپرس اگر میخواهید چک کنید که یک افزونه نصب هست یا خیر می توانید از تابع is_active_plugin استفاده کنید . در بخش اول ابتدا ما چک کردیم در صورتی که این تابع فراخوانی نشده باشد ، از هسته ی وردپرس آن را فراخوانی کند در بخش بعدی چک میکنیم ،  اگر افزونه wp-parsidate نصب نشده است فایل کلاس bn_parsidate را ضمیمه صفحه بکند.

    روش دیگری هم وجود دارد که من همیشه از آن استفاده میکنم و آن هم چک کردن موجودیت کلاس هست در مقابل افزونه.چون در برخی پروژه ها دیدم که عینا برنامه نویسان برای شخصی سازی نام پوشه wp-parsidate را تغییر میدهند و در این حالت ما نمیتوانیم چه پارامتری به تابع is_active_plugin دهیم که بفهمیم افزونه نصب هست یا خیر.
    مورد بعدی اینکه اگر بخواهید در یک فریم ورک مثل codeigniter از کلاس استفاده کنید دیگر تابع is_active_plugin در آن معنی ندارد و می بایست کلاس را چک کنید.کد دوم به صورت زیر هست :

    if (class_exists('bn_parsidate') ===false) {
    	include_once( 'parsidate.php' );
     }

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

    این مشکل را من زیاد داشتم اکثر افزونه هایی که تولید میکنم برای هر دو زبان انگلیسی و فارسی هست.خوب مشکلی که ما داریم این است که افراد غیر ایرانی نیازی به افزونه parsidate ندارند و به تاریخ میلادی نیاز دارند. از طرفی ما در افزونه خود از تابع شمسی استفاده کردیم.راه حل چیه ؟
    برای جلوگیری از این کار میتوانیم ابتدا چک کنیم که وردپرس کاربر در چه زبانی هست بعد از آن مطابق با فارسی یا انگلیسی بودن آن نوع تاریخ را نمایش دهیم :

    /*Check Farsi Locale WordPress*/
    function wp_is_fa() {
    	if ( get_locale() == 'fa_IR' ) { return true; } else { return false; }
    }
    
    $date = "2019-05-10";
    if (wp_is_fa() ) {
    	$date = parsidate("Y-m-d", $date, "eng");
    }
    
    echo $date;

    در مثال بالا ابتدا یک تابع ساده نوشتم تا چک کند در حال حاضر وردپرس کاربر فارسی هست یا خیر.سپس در هر کجای برنامه نویسی افزونه چک میکنم که اگر وردپرس کاربر فارسی بود برای ما به شمسی نمایش دهد.
    البته اگر بخواهیم استاندارد تر کدنویسی کنیم میتوانیم از Filter در وردپرس استفاده کنیم مانند :

    $date = "2019-05-10";
    $date = apply_filters( 'wp_show_datetime_my_plugin', $date );
    echo $date;
    
    /* Adding filter */
    if ( get_locale() == 'fa_IR' ) { 
    	add_filter( 'wp_show_datetime_my_plugin', function($date){
    		$date = parsidate("Y-m-d", $date, "eng");
    		return $date;
    	});
    }

    آموزش استفاده از افزونه پارسی دیت در یک پروژه غیر از وردپرس

    همانند روش بالا میتوانید فایل کلاس bn_parsidate  را در پروژه ی خودتان قرار دهید و آن را ضمیمه کنید . سپس کلاس parsidate را به شکل زیر فراخوانی کرده و از آن استفاده کنید :

    $parsdate_class = bn_parsidate::getInstance();
    $nowdate = $parsdate_class->persian_date("Y-m-d","2018-10-05","eng");

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

    اگر تمامی تاریخ هایی که در بانک اطلاعاتی هست میلادی باشد.یکی از نیاز های ما همواره این است ، که تاریخ شمسی از کاربر دریافت کنیم مانند صفحات گزارش و آن را برای جستجو در بانک اطلاعاتی به تاریخ میلادی تبدیل کنیم.
    فرض کنید میخواهیم لیست تمامی کاربرانی که از تاریخ 10-02-1389 تا تاریخ 05-10-1396 ثبت نام کرده اند را در وردپرس لیست کنیم.برای این کار ابتدا توسط تابع gregdate تاریخ شمسی را به میلادی تبدیل کرده ، سپس پرس و جو در بانک اطلاعاتی را انجام می دهیم :

    $after = gregdate("Y-m-d", "1389-02-10");
    $before = gregdate("Y-m-d", "1396-10-05");
    
    global $wpdb;
    $result = $wpdb->get_results( "SELECT * FROM `".$wpdb->users."` WHERE (user_registered BETWEEN '".$after." 00:00:00' AND '".$before." 10:15:55')" );
    foreach ($result as $user) {
    	echo $user->display_name;
    	echo "<br>";
    }

    در مثال بالا ابتدا دو تاریخ را تبدیل به میلادی کردیم. سپس از آنها در رشته ی SQL برای ایجاد یک درخواست توسط کلاس wpdb استفاده کردیم.

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

    یکی از روش های نمایش آرشیو محتوا در وردپرس استفاده از کلاس قدرتمند WP_Query می باشد.در مثال زیر ما تمامی پست هایی که از تاریخ 10-02-1389 تا تاریخ 05-10-1396 متشر شد را در سایت میتوانیم نمایش دهیم :

    /* After Date */
    $after = gregdate("Y-m-d", "1389-02-10");
    $array_after = explode("-", $after);
    
    /* Before Date */
    $before = gregdate("Y-m-d", "1396-10-05");
    $array_before = explode("-", $before);
    
    /* Set Query */
    $args = array(
    	'date_query' => array(
    		array(
    			'after'     => array(
    				'year'  => $array_after[0],
    				'month' => $array_after[1],
    				'day'   => $array_after[2],
    			),
    			'before'    => array(
    				'year'  => $array_before[0],
    				'month' => $array_before[1],
    				'day'   => $array_before[2],
    			),
    			'inclusive' => true,
    		),
    	),
    	'posts_per_page' => -1,
    );
    $query = new WP_Query( $args );
    while ($query->have_posts()):
    $query->the_post();
    
    echo get_the_title();
    echo "<br>";
    
    endwhile;
    wp_reset_postdata();

    اگر دقت کنید کلاس wp_Query مقادیر سال ، ماه و روز را به صورت جداگانه از ما میخواهد . به همین دلیل من مقدار خروجی تابع میلادی رو با استفاده از تابع explode جداسازی کردم و هر کدام از ماه و سال و روز رو براحتی برگرداندم.

    فارسی سازی اعداد در وردپرس

    برای فارسی سازی اعداد در وردپرس میتوانید از تابع per_number براحتی استفاده کنیم :

    $number = 1486;
    echo per_number($number);

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

    $number = 1486;
    echo number_format_i18n($number);

    تبدیل اعداد فارسی به انگلیسی

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

    echo eng_number(۱۴۸۶);
    مطلب رو به اشتراک بگذارید
    ۲۹دیدگاه
    در بحث‌‌ پیرامون این مقاله شرکت کنید!
    ارسال دیدگاه
    • avatar

      کاربر وب

      پنجشنبه ۶ دی ۱۳۹۷ ۱:۰۴ ب٫ظ

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

      • مهرشاد درزی

        مهرشاد درزی

        پنجشنبه ۴ بهمن ۱۳۹۷ ۱۰:۱۶ ق٫ظ

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

    • avatar

      مهدی مهدوی

      شنبه ۲۲ دی ۱۳۹۷ ۵:۳۰ ب٫ظ

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

      • مهرشاد درزی

        مهرشاد درزی

        سه شنبه ۲ بهمن ۱۳۹۷ ۱۰:۴۳ ق٫ظ

        پیشنهاد میکنم در وب سایت رسمی پارسی دیت یا مخرن گیت هاب یک ایشو معرفی کنید تا توسعه دهندگان این افزونه در آپدیت های بعدی افزونه رو سازگار با acf بکنند.

    • avatar

      حمید

      دوشنبه ۱۸ آذر ۱۳۹۸ ۱۰:۴۰ ق٫ظ

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

      • مهرشاد درزی

        مهرشاد درزی

        دوشنبه ۱۸ آذر ۱۳۹۸ ۱۲:۱۸ ب٫ظ

        بله حرف شما صحیح هست.
        شما فقط کافیه افزونه wp-parsidate رو به آخرین نسخه ارتقا بدید تا مشکلتون برطرف بشه.

    • avatar

      ژیلا امینی

      یکشنبه ۱۷ فروردین ۱۳۹۹ ۷:۳۴ ب٫ظ

      سلام وقت بخیر ممنون از مطلب خوبتون
      یه سوال داشتم راجب این افزونه
      ما با استفاده از تابع parsidate("j F Y", 'now', "per"); تاریخ امروز رو نشون میدیم
      چطور میتونیم تاریخ چند روز دیگه رو با این تابع نشون بدیم ؟
      برای مثال در ووکامرس تاریخ حدودی تحویل کالا که چند روز دیگه هست رو الان به کاربر نشون بدیم

      • مهرشاد درزی

        مهرشاد درزی

        دوشنبه ۱۸ فروردین ۱۳۹۹ ۱۰:۴۳ ق٫ظ

        سلام و عرض ادب
        پارامتر دوم این تابع همان موردی است که شما به آن نیاز دارید.زمانی که این پارامتر برابر با now باشد تاریخ فغلی را بر میگرداند. در غیر این صورت شما هر تاریخی رو بر اساس timestamp بهش بدین دقیقا همون تاریخ رو برمیگردونه.
        با توجه به این که برای دریافت تاریخ فعلی سایت وردپرسی از تابع current_time استفاده می شود کافی است شما بر اساس ثانیه به آن اضافه کنید مثلا تاریخ 7 روز دیگر در همین ساعت می شود:


        parsidate("j F Y", current_time( 'timestamp' ) + (7 * 24 * 60 * 60), "per");

    • avatar

      نوید محمدی

      سه شنبه ۸ مهر ۱۳۹۹ ۱۱:۱۰ ب٫ظ

      بسیار عالی و مفید. تشکر از مطلب کاملتون

    • avatar

      امیرعلی حبیبی

      پنجشنبه ۲ اردیبهشت ۱۴۰۰ ۱۱:۰۳ ق٫ظ

      با سلام

      در بخش " اگر کاربر افزونه ی پارسی..."

      شما از تابع function_exists استفاده کردید؛
      تا اگر تابع is_plugin_active فراخوانی نشده است آن را از هسته وردپرس فراخوانی کنید...

      این عمل رو جا های دیگر هم میتوان استفاده کرد؟

      من میخواهم کاری کنم که یا ایجاد یک پست از پست تایپ سفارشی ای که ساختم مثلا یک ناحیه ابزارکی اضافه شود(یا اعمال دیگری از وردپرس مثل افزودن منو ، متاباکس و...)

      با سپاس.

      • مهرشاد درزی

        مهرشاد درزی

        سه شنبه ۷ اردیبهشت ۱۴۰۰ ۷:۵۸ ق٫ظ

        جز قواعد Best Practice شما از هر تابعی که در هسته ی وردپرس وجود دارد اگر در حال استفاده کردن هستید می بایست قبل از فراخوانی آن را چک کنید. تا در صورت عدم وجود کاربر با خطای Fetal Error در PHP برخورد نکند.

    • avatar

      وحید

      چهارشنبه ۲ تیر ۱۴۰۰ ۹:۱۷ ب٫ظ

      سلام وقت بخیر
      آیا این پلاگین کد php دارد که بتونم تاریخ و ساعت ارسال هر پست در سایت را نماش دهم؟
      با تشکر

      • مهرشاد درزی

        مهرشاد درزی

        پنجشنبه ۳ تیر ۱۴۰۰ ۹:۰۳ ق٫ظ

        بله شما میتوانید ابتدا توسط تابع get_post مقدار post_date یا همان تاریخ انتشار یک پست را بدست آورید ، سپس توسط تابع date_i18n یا parsidate آن را به شمسی در فرمت دلخواه تبدیل کنید.

        $post_id = 1;
        $post = get_post($post_id);
        echo date_i18n("Y-m-d", strtotime($post->post_date));

      • avatar

        وحید

        پنجشنبه ۳ تیر ۱۴۰۰ ۱۰:۱۲ ب٫ظ

        شما در اینجا post_id = 1 قرار دادید یعنی آن پستی که آیدی یک دارد را بررسی میکند و تاریخش را نمایش میدهد.
        من دنبال کدی هستم که بتونم آن را در single.php قرار دهم و خودش اتوماتیک تاریخ و ساعت ارسال هر پست را نمایش دهد.

      • مهرشاد درزی

        مهرشاد درزی

        جمعه ۴ تیر ۱۴۰۰ ۱۱:۰۶ ق٫ظ

        شما اگر مستندات وردپرس را مطالعه کنید خواهید دید که برای دریافت Post ID در صفحه ی single.php و یا صفحه ی singular.php که برای پست تایپ های سفارشی (Custom Post Type) هست ، از تابع get_the_ID استفاده کنید.همچنین میتوانید برای دسترسی به تمامی مقادیر یک پست چه در حلقه کلاس WP_Query و یا چه در صفحه ی سینگل از متغیر:

        global $wp_query;
        var_dump($wp_query);

        و یا

        global $post;
        echo $post->ID;

        استفاده کنید.

      • avatar

        وحید

        جمعه ۴ تیر ۱۴۰۰ ۶:۴۹ ب٫ظ

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

      • مهرشاد درزی

        مهرشاد درزی

        یکشنبه ۶ تیر ۱۴۰۰ ۶:۱۹ ب٫ظ

        بطور کلی هر کدام از پارامتر های تاریخ در زبان PHP بر اساس یک حروف مشخص می شود. در این مثال مقدار Y-m-d برای نمایش تاریخ هست و برای نمایش ساعت میتوانید از Y-m-d H:i استفاده کنید.لیست کامل این حروف ها در PDF همین مقاله وجود دارد که می توانید استفاده کنید.

      • avatar

        وحید

        یکشنبه ۶ تیر ۱۴۰۰ ۷:۴۷ ب٫ظ

        سپاس از شما. مشکلم حل شد.

    • avatar

      محمدرضا

      شنبه ۱۳ شهریور ۱۴۰۰ ۴:۳۵ ب٫ظ

      برای فارسی کردن تمامی اعداد بخش مدیریت وردپرس چطور میشه از افزونه پارسی دیت کمک گرفت؟

      • مهرشاد درزی

        مهرشاد درزی

        شنبه ۱۳ شهریور ۱۴۰۰ ۴:۵۰ ب٫ظ

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

    • avatar

      علی اصغر نجاری قزاآنی

      یکشنبه ۱۱ مهر ۱۴۰۰ ۴:۱۵ ب٫ظ

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

    • avatar

      MiR

      سه شنبه ۷ دی ۱۴۰۰ ۶:۱۰ ب٫ظ

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

      • مهرشاد درزی

        مهرشاد درزی

        پنجشنبه ۹ دی ۱۴۰۰ ۴:۱۳ ب٫ظ

        برای شمسی سازی افزونه ها دو مرحله لازم هست:
        1) نمایش تاریخ شمسی به جای میلادی که میبایست تمامی کدهای برنامه نویسی افزونه را بررسی کنید و از هوک های آن استفاده کنید
        2) تبدیل ریکوئست های دیتابیس از شمسی به میلادی

    • avatar

      جمشید

      چهارشنبه ۲۶ مرداد ۱۴۰۱ ۲:۱۸ ب٫ظ

      سلام وقت به خیر.

      ببخشید من از این کد برای تبدیل تاریخ میلادی به شمسی استفاده میکنم و درست انجام میشه. به جز ساعتش که با چند ساعت
      تاخیر (احتمالا گرینویچ) رو نشون میده:

      echo parsidate("Y/m/d H:i:sa","now","per");

      • مهرشاد درزی

        مهرشاد درزی

        چهارشنبه ۲۶ مرداد ۱۴۰۱ ۹:۲۵ ب٫ظ

        برای استاندارد کردن ساعت محلی ابتدا وارد تنظیمات عمومی سایت وردپرس شوید و در قسمت زمان محلی Tehran را انتخاب کنید.
        برای دریافت ساعت دقیق فعلی در وردپرس باید از تابع current_time در هسته ی وردپرس استفاده کنید تا مقدار timestamp فعلی را همراه با اختلاف ساعت برایتان نشان دهد.
        پس با این تفاسیر در تابع فوق بجای پارامتر now از تابع مذکور استفاده کنید.

    • avatar

      ایوب زارع

      شنبه ۱۵ بهمن ۱۴۰۱ ۱۱:۴۸ ق٫ظ

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

      add_filter( 'wp_date', 'filter_function_name', 10, 4 );
      function filter_function_name( $date, $format, $timestamp, $timezone ){
      $timestamp = strtotime($date);
      $g_y = idate('Y', $timestamp);
      $g_m = idate('m', $timestamp);
      $g_d = idate('d', $timestamp);
      $date = gregorian_to_jalali( $g_y , $g_m , $g_d , '/' );
      return $date;
      }

      • مهرشاد درزی

        مهرشاد درزی

        شنبه ۱۵ بهمن ۱۴۰۱ ۹:۵۱ ب٫ظ

        استفاده از هوک wp_date بسیار خلاقانه هست و مشکلی ندارد ، اما زمانی که از توابع اصلی وردپرس هنگام خروجی آن یک فیلتر انجام می دهد از آن جا که تمام دستورات را تحت تاثیر قرار می دهد باید شروط لازم را قید کنید. به عنوان مثال در این هوک فرمت های مختلفی می تواند تحت متغیر format پاس داده شود و استفاده از strtotime بدون چک کردن فرمت تاریخ اشتباه هست در صورتی که پارامتر سوم timestamp را داده است ، این مبحث همینطور در زمان return دادن هم باید دقت شود. پیشنهاد میکنم تنها در مواقعی که نیاز دارید این هوک را با شروطی مثل loop query استفاده کنید.

    • avatar

      علی رضایی

      دوشنبه ۹ مرداد ۱۴۰۲ ۳:۵۴ ب٫ظ

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

      • مهرشاد درزی

        مهرشاد درزی

        دوشنبه ۹ مرداد ۱۴۰۲ ۴:۲۰ ب٫ظ

        داخل گراویتی فرم هر فرم دارای چند تا فیلد هست که هر فیلد اون هم یک شناسه یونیک یا ID دارد. شما میبایست بوسیله هوک وردپرس gform_pre_render یک مقدار پیش فرض برای تاریخ خودتون تعیین کنید تا تاریخ روز نمایش داده شود.
        توضیحات بیش تر:
        https://docs.gravityforms.com/gform_pre_render

    آکادمی وردپرس واقعی

    دوره جامع مدیریت حرفه ای استارتاپ های وردپرس با خط فرمان و ابزار پکیج منیجر

    در دوره جامع WP-CLI یاد خواهید گرفت، به شکل کاملا حرفه ای و با سرعت بیش تر یک یا چند وب سایت وردپرسی خود را مدیریت کنید.عملیات تکراری در مدیریت وردپرس را برای کاهش هدر رفت زمان خود سیستم سازی کنید. وردپرس شما در حین کار با خط فرمان فشار کم تری به سرور ایجاد می کند و این رویکرد می تواند وب سایت شما را بدون نقص و با سرعت عالی ارائه دهد
    • محتوای آموزشی: ۴۶ جلسه آموزشی شامل ۱۶ ساعت ویدیو آموزشی به همراه تمرینات و فایل PDF خلاصه محتوا
    • پروژه عملی دوره: نصب و مدیریت کامل بخش های یک استارتاپ وردپرس در هاست
    • کلاس رفع اشکال: کلاس آنلاین ۳۰ دقیقه ای در پایان دوره به صورت کاملا خصوصی با استاد درزی برای تثبیت محتوا و رفع اشکالات دانشجو
    ۳,۶۹۷,۰۰۰ تومان
    سرویس ها و خدمات وردپرس

    اتصال استاندارد رسانه های وردپرس ، فایل های ووکامرس ، EDD و گرویتی فرم به هاست دانلود

    افزایش هشتاد درصدی سرعت وب سایت های وردپرس با اتصال تصاویر ، ویدیو ، صوت و فایل های فروشگاه ووکامرس ، Easy Digital Downloads و گرویتی فرم به هاست دانلود با قابلیت تغییر لینک اتوماتیک رسانه ها در محتوا و محافظ از سرقت فایل فروشی
    ۲,۰۰۰,۰۰۰ ۱,۴۷۰,۰۰۰ تومان

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

    قابلیت استعلام در سامانه اعتبار سنجی اشخاص حقیقی و حقوقی برای پرداخت های اعتباری در پنل فروشگاه ووکامرس بر اساس کد ملی و شماره همراه مشتریان وردپرس
    ۴,۵۰۰,۰۰۰ ۲,۸۷۰,۰۰۰ تومان

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

    اتصال دو طرفه بخش انبارداری یا محصولات ، مشتریان و فاکتور های نرم افزار حسابداری هلو با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
    ۱۸,۰۰۰,۰۰۰ ۱۳,۸۴۰,۰۰۰ تومان

    اتصال نرم افزار حسابداری دشت همکاران سیستم به افزونه فروشگاه ساز ووکامرس

    اتصال دو طرفه بخش انبارداری یا محصولات ، مشتریان و فاکتور های نرم افزار حسابداری دشت همکاران سیستم با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
    ۸,۰۰۰,۰۰۰ ۶,۴۷۰,۰۰۰ تومان

    اتصال یک یا چند پنل فروشندگان دیجی کالا به افزونه فروشگاه ساز ووکامرس

    اتصال و هماهنگی بخش محصولات ، و سفارشات پنل فروشندگان دیجی کالا با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول و مدیریت لیست سفارشات دیجی کالا در مدیریت وردپرس
    ۱,۲۵۰,۰۰۰ ۱,۰۰۰,۰۰۰ تومان

    اتصال نرم افزار حسابداری باران به افزونه فروشگاه ساز ووکامرس

    اتصال دو طرفه بخش انبارداری یا محصولات ، مشتریان و فاکتور های نرم افزار حسابداری باران با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
    ۱۰,۰۰۰,۰۰۰ ۸,۴۳۰,۰۰۰ تومان

    اتصال نرم افزار حسابداری راهکاران همکاران سیستم به افزونه فروشگاه ساز ووکامرس

    اتصال دو طرفه بخش انبارداری یا محصولات ، مشتریان و فاکتور های نرم افزار حسابداری راهکاران از شرکت همکاران سیستم با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
    ۲۵,۰۰۰,۰۰۰ ۱۴,۶۳۰,۰۰۰ تومان

    اتصال نرم افزار حسابداری ابری رادیکال به افزونه فروشگاه ساز ووکامرس

    اتصال دو طرفه بخش انبارداری یا محصولات و فاکتور های نرم افزار حسابداری ابری رادیکال با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
    ۸۰۰,۰۰۰ ۴۹۷,۰۰۰ تومان

    اتصال نرم افزار حسابداری کیان نور رایانه به فروشگاه ساز ووکامرس

    اتصال دو طرفه بخش انبارداری یا محصولات و فاکتور های نرم افزار حسابداری کیان نور رایانه با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
    ۱۸,۰۰۰,۰۰۰ ۱۳,۸۴۰,۰۰۰ تومان

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

    اتصال دو طرفه بخش انبارداری یا محصولات و فاکتور های نرم افزار حسابداری سپیدار از شرکت همکاران سیستم با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
    ۲۰,۷۳۰,۰۰۰ ۱۳,۴۷۰,۰۰۰ تومان

    اتصال نرم افزار حسابداری گیو به افزونه فروشگاه ساز ووکامرس

    اتصال دو طرفه بخش انبارداری یا محصولات و فاکتور های نرم افزار جامع حسابداری گیو با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
    ۱۵,۰۰۰,۰۰۰ تومان

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

    اتصال دو طرفه بخش انبارداری یا محصولات و فاکتور های نرم افزار حسابداری ترنج رهیافت با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
    ۱۰,۰۰۰,۰۰۰ ۸,۵۹۷,۰۰۰ تومان

    اتصال نرم افزار حسابداری مهر باستان به افزونه فروشگاه ساز ووکامرس

    اتصال دو طرفه بخش انبارداری یا محصولات و فاکتور های نرم افزار جسابداری مهر باستان با افزونه فروشگاه ساز ووکامرس ، همراه با قابلیت بروزرسانی هماهنگ موجودی ها و قیمت های محصول ، ایجاد فاکتور های اتوماتیک به نام مشتریان وردپرس در نرم افزار حسابداری
    ۱۲,۰۰۰,۰۰۰ ۸,۵۶۷,۰۰۰ تومان