سلام کاربران عزیز کتابخانه فناوری اطلاعات ، امروز با یک آموزش ناب و اختصاصی در خدمتتون هستم .
طبق درخواست یکی از کاربران محترم سایت که قطعه ای کد نیاز داشتند بنده آموزش ساختن فیلد جدید در صفحه پرداخت ووکامرس woocomerce + کد رو به صورت اختصاصی تهیه کردم . که بقیه ی کاربران سایت هم بتونن از این کد استفاده لازم رو ببرن .
خب این آموزش رو به ۲ قسمت تقسیم می کنم قسمت اول کد هارو بخش بخش توضیح می دم و در قسمت دوم قطعه کامل کد رو قرار می دم .
نکته : کاربران گرامی لطفا بخش اول رو مطالعه کنید و یاد بگیرید در مرحله بعد سراغ قسمت دوم بروید . کد ها آسان هستند و به صورت روان توضیح خواهم داد . با ما همراه باشید
تمامی قطعه کد هایی که در ادامه معرفی می شوند در فایل Functions.php پوشه قالب سایت وردپرسی تان باید اضافه گردد در صورتی که قالب وردپرسی شما این فایل را ندارد میتوانید یک فایل متنی بسازید و عنوان ، فرمت آن را Functions.php قرار دهید .
خب بنده در این آموزش طبق خواسته کاربر عزیزمون آقای پیام می خوام یک فیلد بنام نوع شخص در صفحه پرداخت ووکامرس اضافه کنم به صورتی که اگر خریدار نوع شخص ، حقیقی رو انتخاب کرد یک فیلد براش باز بشه که کد ملی رو وارد بکنه و اگر نوع شخص ، حقوقی رو انتخاب کرد سه تا فیلد باز بشه بنام های شناسه ملی ، کد اقتصادی و نام شرکت . و در آخر اطلاعات ثبت شده توسط خربدار رو بررسی و ذخیره کنیم .
در بخش اول از کد ها ما تمامیه فیلد هایی که مورد نیاز است را به صورت زیر تعریف می کنیم . بنده در کد زیر ۵ عدد فیلد درست کردم در زیر تمامیه کد ها رو تشریح می کنم .
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ ۵۰ ۵۱ ۵۲ |
function itlibrary_add_select_checkout_field( ) { return array( 'type' => 'select', 'class' => array( 'wps-drop' ), 'label' => __( 'نوع شخص' ), 'options' => array( 'real' => __( 'حقیقی', 'wps' ), 'legal' => __( 'حقوقی', 'wps' ) ), 'required' => true ); } function itlibrary_billing_code_meli_field() { return array( 'type' => 'text', 'label' => __( 'کد ملی شخص' ), 'placeholder' => __( 'کد ملی را وارد کنید' ), 'class' => array( 'form-row-wide', 'update_totals_on_change', 'code_meli' ), 'priority' => ۱۱۰, 'required' => true, ); } function itlibrary_billing_shenase_meli_field() { return array( 'type' => 'text', 'label' => __( 'شناسه ملی' ), 'placeholder' => __( 'شناسه ملی را وارد کنید' ), 'class' => array( 'form-row-wide', 'update_totals_on_change', 'shenase_meli' ), 'priority' => ۱۱۰, 'required' => true, ); } function itlibrary_billing_code_eghtesady_field() { return array( 'type' => 'text', 'label' => __( 'کد اقتصادی' ), 'placeholder' => __( 'کد اقتصادی را وارد کنید' ), 'class' => array( 'form-row-wide', 'update_totals_on_change', 'code_eghtesady' ), 'priority' => ۱۱۰, 'required' => false, ); } function itlibrary_billing_name_sherkat_field() { return array( 'type' => 'text', 'label' => __( 'نام شرکت' ), 'placeholder' => __( 'نام شرکت را وارد کنید' ), 'class' => array( 'form-row-wide', 'update_totals_on_change', 'name_sherkat' ), 'priority' => ۱۱۰, 'required' => false, ); } |
نکته : بعلت این که بنده ۵ عدد فیلد ساختم و کد ایحاد کردن فیلد شبیه هم و تکرار شده است من یک عدد از کد ساخته شدن فیلد ها رو کامل توضیح میدم و شما خودتون مثل بنده می تونید هر چند عدد فیلد نیاز داشتید درست کنید .
نکته : خط های ۱ تا ۱۲ فیلد نوع شخص ، خط های ۱۳ تا ۲۲ فیلد کد ملی ، خط های ۲۳ تا ۳۲ فیلد شناسه ملی ، خط های ۳۳ تا ۴۲ فیلد کد اقتصادی و خط های ۴۳ تا ۵۲ فیلد نام شرکت هستند .
خط ۱ : یک تابع بنام itlibrary_add_select_checkout_field ایجاد کردم برای درست کردن فیلد داخل آن .
خط ۲ : یک آرایه تعریف کردم که شامل تابع های از پیش تعریف شده ی ووکامرس برای ساختن فیلد هستش .
خط ۳ : اولین تابع برای انتخاب کردن نوع فیلد تابع type می باشد که ۴ مقدار می گیرد ( text , textarea , password , select ) که در اینجا بنده نوع فیلدم رو select قرار دادم .
خط ۴ : در این قسمت برای فیلدم class مشخص کردم .
خط ۵ : توسط تابع label یک توضیح کوتاه برای کاربر مشخص کردم که متوجه بشه چه اطلاعاتی باید وارد بکند .
خط ۶ , ۷ , ۸ , ۹ : تابع options زیر گزینه های فیلد select را مشخص می کند و بنده ۲ زیر گزینه اضافه کردم بنام های حقیقی و حقوقی که صفت name هر کدام را به ترتیب real و legal قرار دادم که بتونم در php به داده های درون آن ها دسترسی داشته باشم .
خط ۱۰ : تابع آخری در تعریف این فیلد که required نام دارد برای این است که پر کردن فیلد اجباری باشد یا اختیاری .
خب ما بعلت این که می خوایم وقتی خریدار نوع شخص مد نظر خود را انتخاب کرد و طبق انتخاب آن فیلد های زیر گزینه رو نمایش بدیم به همین خاطر باید یک ساختار باکس برای فیلد هایمان ایجاد کنیم که عملیات باز و بسته شدن و کم و زیاد فیلد ها را توسط باکس ( یا همان تگ Div ) و جی کوئری انجام دهیم .
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ |
add_action( 'woocommerce_after_checkout_billing_form', 'itlibrary_box_fields' ); function itlibrary_box_fields( $checkout ){ echo '<div id="fattura-warper" class="col-lg-12 col-md-12 col-sm-12 col-xs-12 mt-2 mb-2"> <div style="cursor:pointer;"> '.woocommerce_form_field( 'typeperson', itlibrary_add_select_checkout_field(), $checkout->get_value( 'typeperson' ) ).' </div> <div id="fattura-field">'; woocommerce_form_field( 'code_meli', itlibrary_billing_code_meli_field(), $checkout->get_value( 'code_meli' ) ); woocommerce_form_field( 'shenase_meli', itlibrary_billing_shenase_meli_field(), $checkout->get_value( 'shenase_meli' ) ); woocommerce_form_field( 'code_eghtesady', itlibrary_billing_code_eghtesady_field(), $checkout->get_value( 'code_eghtesady' ) ); woocommerce_form_field( 'name_sherkat', itlibrary_billing_name_sherkat_field(), $checkout->get_value( 'name_sherkat' ) ); echo '</div></div>'; ?> <script> jQuery(function($){ $('.code_meli').show(۰); $('.shenase_meli,.code_eghtesady,.name_sherkat').hide(۰); $('#typeperson').change(function(){ if($(this).val() == 'real'){ $('#fattura-field,.code_meli').slideDown('slow'); $('.shenase_meli,.code_eghtesady,.name_sherkat').slideUp('fast'); }else if($(this).val() == 'legal'){ $('#fattura-field,.shenase_meli,.code_eghtesady,.name_sherkat').slideDown('slow'); $('.code_meli').slideUp('fast'); } }); }); </script> <?php } |
خط ۱ : از طریق تابع add_action مشخص می کنیم که کد هایمان کجای صفحات ووکامرس قرار بگیرند . به این شکل که آرگومان اول نام محل های از پیش تعیین شده ووکامرس ( Woocommerce Hook ) و آرگومان دوم نام تابع خودمان را میزنیم که حاوی کد ها و فیلد هایمان است .
خط ۲ : تابع خودم را تعریف کردم .
خط ۳ , ۴ , ۶ , ۷ , ۱۲ : در این قسمت توسط تابع echo ساختار باکس های خود را میسازیم دقت کنید برای باکس ها id تعریف کنید چون می خواهیم از طریق jquery عملیات روی آن ها انجام دهیم .
خط ۵ , ۸ , ۹ , ۱۰ , ۱۱ : در این پنج خط از یک تابع مشخص ووکامرس بنام woocommerce_form_field استفاده کردم . کار این تابع ایجاد کردن یا دسترسی به فیلد های ایجاد شده می باشد .
این تابع که در زیر شکل پیش فرض آن را قرار دادم تا تشریح کنم چه مقدار هایی دریافت می کند ، سه آرگومان می گیرد اولی $key ( نام فیلد ) و دومین آرگومان تابع از نوع آرایه $args میباشد که می توان به دو صورت مقدار دهی کرد :
۱ : از آرایه استفاده کرد برای تعریف فیلد جدید .
۲ : فیلدی که قبلا در یک تابع ساخته اید رو اینجا فراخوانی کنید ( که بنده در این آموزش از همین روش استفاده کردم ) .
و در نهایت آرگومان سوم $value = null که مقدار وارد شده توسط کاربر رو در خودش ذخیره می کند و به این صورت $checkout->get_value( ‘code_meli’ ) نوشته می شود .
شما می تونید بجای code_meli از نام دلخواه خود استفاده کنید و از این طریق براحتی به داده داخل فیلدتون در php دسترسی دارید که عملیات های خود را روی آن انجام دهید .
۱ ۲ ۳ ۴ ۵ |
woocommerce_form_field( $key, $args, $value = null ); // مثال کاربردی woocommerce_form_field( 'code_meli', itlibrary_billing_code_meli_field(), $checkout->get_value( 'code_meli' ) ); |
خط ۱۴ , ۱۵ : تگ script و function jquery رو باز کردم برای نوشتن کد های jquery موردنیازم .
خط ۱۶ : بعد از بارگذاری کامل صفحه ، فیلد کد ملی توسط تابع show در سرعت ۰ میلی ثانیه نشان داده شود .
خط ۱۷ : بعد از بارگذاری کامل صفحه ، فیلد های شناسه ملی ، کد اقتصادی و نام شرکت از طریق تابع hide در سرعت ۰ میلی ثانیه پنهان شوند .
خط ۱۸ : اگر فیلد نوع شخص مقدارش تغییر کرد کد های زیر اجرا شوند .
خط ۱۹ : یک شرط قرار دادم که اگر فیلد نوع شخص مقدارش برابر شد با real ( حقیقی ) کد های درون شرط اجرا شوند .
خط ۲۰ : باکس #fattura-field که حاوی فیلدهای کد ملی ، شناسه ملی ، کد اقتصادی و نام شرکت است فقط با کد ملی بصورت انیمیشن اسلایدی ( slideDown ) نمایش داده شوند .
خط ۲۱ : فیلد های شناسه ملی ، کد اقتصادی و نام شرکت با انیمیشن اسلایدی ( slideUp ) پنهان شوند .
خط ۲۲ : در غیر این صورت اگر فیلد نوع شخص مقدارش برابر شد با legal ( حقوقی ) .
خط ۲۳ : باکس #fattura-field و فیلدهای شناسه ملی ، کد اقتصادی و نام شرکت با انیمیشن اسلایدی ( slideDown ) نمایش داده شوند .
خط ۲۴ : فیلد کد ملی با انیمیشن اسلایدی ( slideUp ) پنهان شود .
خط ۲۵ تا ۳۰ : بستن کد های باز شده بالا می باشند .
تا این قسمت فیلد های خودمان را ساختیم و عملیات نمایش دادن و پنهان شدن آن ها را برنامه ریزی کردیم . حالا می خوایم فیلد های اجباری اعم از کد ملی و شناسه ملی رو بررسی کنیم که خالی نباشن و اگر خالی بودن به کاربر پیغام ارور بدیم .
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ |
add_filter( 'woocommerce_checkout_process', 'itlibrary_check_checkout_field' ); function itlibrary_check_checkout_field() { if($_POST['typeperson'] == 'real'){ if( !isset($_POST['code_meli']) && empty($_POST['code_meli']) ) wc_add_notice( __( 'کد ملی یک فیلد الزامی است', 'woocommerce' ), 'error' ); }else if($_POST['typeperson'] == 'legal'){ if( !isset($_POST['shenase_meli']) && empty($_POST['shenase_meli']) ) wc_add_notice( __( 'شناسه ملی یک فیلد الزامی است', 'woocommerce' ), 'error' ); } } |
خط ۱ : توسط تابع add_filter مشخص می کنیم که بعد از انجام شدن پردازش خاصی در ووکامرس ، عملیات مدنظر ما هم انجام شود ( وقتی کاربر روی دکمه ثبت سفارش کلیک کند آن وقت این تابع ما فراخوانی می شود و عمل می کند ) .
خط ۲ : تابع خود را تعریف کردیم .
خط ۳ : یک شرط قرار می دهیم با این عنوان ، که اگر فیلد نوع شخص ( typeperson ) مقدارش برابر بود با حقیقی ( real ) .
خط ۴ : یک شرط دیگر درون شرط بالا قرار می دهیم با این عنوان که اگر فیلد کد ملی وارد نشده بود و خالی بود .
خط ۵ : پیغام کد ملی یک فیلد الزامی است توسط تابع wc_add_notice ووکامرس به کاربر نمایش داده شود .
خط ۶ : در غیر این صورت اگر فیلد نوع شخص ( typeperson ) مقدارش برابر بود با حقوقی ( legal ) .
خط ۷ : و دوباره یک شرط دیگر درون شرط فوق قرار می دهیم که اگر فیلد شناسه ملی وارد نشده بود و خالی بود .
خط ۸ : پیغام شناسه ملی یک فیلد الزامی است به کاربر نمایش داده شود .
خط ۹ , ۱۰ : بستن کد های باز شده بالا می باشند .
در این قسمت که بخش پایانی تشریح کدها می باشد می خوایم مقدار های وارد شده توسط خریدار رو داخل پایگاه داده ووکامرس ذخیره کنیم ، و در قسمت پایانی بعد از این بخش سورس کامل رو قرار خواهم داد که در کپی و پیست کردن مشکلی برای کدهاتون پیش نیاد .
نکته : بعلت این که بنده روی localhost این آموزش رو تهیه کردم نتونستم این قسمت رو تست کنم ولی به احتمال زیاد کد زیر مشکلی نخواهد داشت .
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ |
add_filter( 'woocommerce_checkout_create_order', 'itlibrary_save_checkout_field_value', ۱۰, ۲ ); function itlibrary_save_checkout_field_value( $order, $data ) { if( isset($_POST['typeperson']) && !empty($_POST['typeperson']) ) { if($_POST['typeperson'] == 'real'){ $order->update_meta_data( 'billing_typeperson', sanitize_text_field( $_POST['typeperson'] ) ); $order->update_meta_data( 'billing_code_meli', sanitize_text_field( $_POST['code_meli'] ) ); if( $order->get_customer_id() ) update_user_meta( $order->get_customer_id(), 'billing_typeperson', sanitize_text_field( $_POST['typeperson'] ) ); update_user_meta( $order->get_customer_id(), 'billing_code_meli', sanitize_text_field( $_POST['code_meli'] ) ); }else if($_POST['typeperson'] == 'legal'){ $order->update_meta_data( 'billing_typeperson', sanitize_text_field( $_POST['typeperson'] ) ); $order->update_meta_data( 'billing_shenase_meli', sanitize_text_field( $_POST['shenase_meli'] ) ); $order->update_meta_data( 'billing_code_eghtesady', sanitize_text_field( $_POST['code_eghtesady'] ) ); $order->update_meta_data( 'billing_name_sherkat', sanitize_text_field( $_POST['name_sherkat'] ) ); if( $order->get_customer_id() ) update_user_meta( $order->get_customer_id(), 'billing_typeperson', sanitize_text_field( $_POST['typeperson'] ) ); update_user_meta( $order->get_customer_id(), 'billing_shenase_meli', sanitize_text_field( $_POST['shenase_meli'] ) ); update_user_meta( $order->get_customer_id(), 'billing_code_eghtesady', sanitize_text_field( $_POST['code_eghtesady'] ) ); update_user_meta( $order->get_customer_id(), 'billing_name_sherkat', sanitize_text_field( $_POST['name_sherkat'] ) ); } } } |
نکته : در قطعه کد بالا بعضی از تابع ها تکرار شده اند به همین علت بنده فقط یکبار یدونه از اون ها رو توضیح میدم و یاد بگیرید خودتون بقیش رو متوجه میشید .
خط ۱ : توسط تابع add_filter مشخص می کنیم که بعد از انجام شدن پردازش خاصی در ووکامرس ، عملیات مدنظر ما هم انجام شود ( هنگامی که یک سفارش بخواهد ایجاد و تنظیم شود آن وقت این تابع ما فراخوانی می شود و عمل می کند ) .
خط ۲ : تابع خودم را تعریف کردم .
خط ۳ : شرط قرار دادم که اگر فیلد نوع شخص انتخاب شده بود و خالی نبود .
خط ۴ : و اگر فیلد نوع شخص برابر بود با حقیقی ( real ) کد درون شرط اجرا شود .
خط ۵ : توسط تابع ووکامرس update_meta_data که سه مقدار میگیرد و ما در اینجا دو مقدار رو تعیین کردیم اولی نام فیلد و دومی مقدار وارد شده توسط خریدار یا همان ( value ) فیلد ، اطلاعات را در پایگاه داده ذخیره می کنیم .
خط ۷ : از طریق تابع get_customer_id ووکامرس که آی دی مشتری رو چاپ می کند یک شرط قرار می دهیم که اگر سفارش انجام شد توسط مشتری با آی دی فلان کد درون شرط اجرا شود .
خط ۸ : برای بروزرسانی اطلاعات نمایشی سمت کاربر از تابع update_user_meta وردپرس استفاده کردم که اولین آرگومان آن آی دی کاربر است و دومین آرگومان نام فیلد و سومین آرگومان مقدار وارد شده توسط مشتری در فیلد می باشد .
خط ۱۰ : در پی شرط بالا که گفتیم اگر فیلد نوع شخص برابر بود با حقیقی ( real ) عملیات فوق انجام شوند در اینجا میگیم در غیر اینصورت اگر فیلد نوع شخص برابر بود با حقوقی ( legal ) کد های درون شرط اجرا شوند .
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ ۲۴ ۲۵ ۲۶ ۲۷ ۲۸ ۲۹ ۳۰ ۳۱ ۳۲ ۳۳ ۳۴ ۳۵ ۳۶ ۳۷ ۳۸ ۳۹ ۴۰ ۴۱ ۴۲ ۴۳ ۴۴ ۴۵ ۴۶ ۴۷ ۴۸ ۴۹ ۵۰ ۵۱ ۵۲ ۵۳ ۵۴ ۵۵ ۵۶ ۵۷ ۵۸ ۵۹ ۶۰ ۶۱ ۶۲ ۶۳ ۶۴ ۶۵ ۶۶ ۶۷ ۶۸ ۶۹ ۷۰ ۷۱ ۷۲ ۷۳ ۷۴ ۷۵ ۷۶ ۷۷ ۷۸ ۷۹ ۸۰ ۸۱ ۸۲ ۸۳ ۸۴ ۸۵ ۸۶ ۸۷ ۸۸ ۸۹ ۹۰ ۹۱ ۹۲ ۹۳ ۹۴ ۹۵ ۹۶ ۹۷ ۹۸ ۹۹ ۱۰۰ ۱۰۱ ۱۰۲ ۱۰۳ ۱۰۴ ۱۰۵ ۱۰۶ ۱۰۷ ۱۰۸ ۱۰۹ ۱۱۰ ۱۱۱ ۱۱۲ ۱۱۳ ۱۱۴ ۱۱۵ ۱۱۶ ۱۱۷ |
function itlibrary_add_select_checkout_field( ) { return array( 'type' => 'select', 'class' => array( 'wps-drop' ), 'label' => __( 'نوع شخص' ), 'options' => array( 'real' => __( 'حقیقی', 'wps' ), 'legal' => __( 'حقوقی', 'wps' ) ), 'required' => true ); } function itlibrary_billing_code_meli_field() { return array( 'type' => 'text', 'label' => __( 'کد ملی شخص' ), 'placeholder' => __( 'کد ملی را وارد کنید' ), 'class' => array( 'form-row-wide', 'update_totals_on_change', 'code_meli' ), 'priority' => ۱۱۰, 'required' => true, ); } function itlibrary_billing_shenase_meli_field() { return array( 'type' => 'text', 'label' => __( 'شناسه ملی' ), 'placeholder' => __( 'شناسه ملی را وارد کنید' ), 'class' => array( 'form-row-wide', 'update_totals_on_change', 'shenase_meli' ), 'priority' => ۱۱۰, 'required' => true, ); } function itlibrary_billing_code_eghtesady_field() { return array( 'type' => 'text', 'label' => __( 'کد اقتصادی' ), 'placeholder' => __( 'کد اقتصادی را وارد کنید' ), 'class' => array( 'form-row-wide', 'update_totals_on_change', 'code_eghtesady' ), 'priority' => ۱۱۰, 'required' => false, ); } function itlibrary_billing_name_sherkat_field() { return array( 'type' => 'text', 'label' => __( 'نام شرکت' ), 'placeholder' => __( 'نام شرکت را وارد کنید' ), 'class' => array( 'form-row-wide', 'update_totals_on_change', 'name_sherkat' ), 'priority' => ۱۱۰, 'required' => false, ); } add_action( 'woocommerce_after_checkout_billing_form', 'itlibrary_box_fields' ); function itlibrary_box_fields( $checkout ){ echo '<div id="fattura-warper" class="col-lg-12 col-md-12 col-sm-12 col-xs-12 mt-2 mb-2"> <div style="cursor:pointer;"> '.woocommerce_form_field( 'typeperson', itlibrary_add_select_checkout_field(), $checkout->get_value( 'typeperson' ) ).' </div> <div id="fattura-field">'; woocommerce_form_field( 'code_meli', itlibrary_billing_code_meli_field(), $checkout->get_value( 'code_meli' ) ); woocommerce_form_field( 'shenase_meli', itlibrary_billing_shenase_meli_field(), $checkout->get_value( 'shenase_meli' ) ); woocommerce_form_field( 'code_eghtesady', itlibrary_billing_code_eghtesady_field(), $checkout->get_value( 'code_eghtesady' ) ); woocommerce_form_field( 'name_sherkat', itlibrary_billing_name_sherkat_field(), $checkout->get_value( 'name_sherkat' ) ); echo '</div></div>'; ?> <script> jQuery(function($){ $('.code_meli').show(۰); $('.shenase_meli,.code_eghtesady,.name_sherkat').hide(۰); $('#typeperson').change(function(){ if($(this).val() == 'real'){ $('#fattura-field,.code_meli').slideDown('slow'); $('.shenase_meli,.code_eghtesady,.name_sherkat').slideUp('fast'); }else if($(this).val() == 'legal'){ $('#fattura-field,.shenase_meli,.code_eghtesady,.name_sherkat').slideDown('slow'); $('.code_meli').slideUp('fast'); } }); }); </script> <?php } add_filter( 'woocommerce_checkout_process', 'itlibrary_check_checkout_field' ); function itlibrary_check_checkout_field() { if($_POST['typeperson'] == 'real'){ if( !isset($_POST['code_meli']) && empty($_POST['code_meli']) ) wc_add_notice( __( 'کد ملی یک فیلد الزامی است', 'woocommerce' ), 'error' ); }else if($_POST['typeperson'] == 'legal'){ if( !isset($_POST['shenase_meli']) && empty($_POST['shenase_meli']) ) wc_add_notice( __( 'شناسه ملی یک فیلد الزامی است', 'woocommerce' ), 'error' ); } } add_filter( 'woocommerce_checkout_create_order', 'itlibrary_save_checkout_field_value', ۱۰, ۲ ); function itlibrary_save_checkout_field_value( $order, $data ) { if( isset($_POST['typeperson']) && !empty($_POST['typeperson']) ) { if($_POST['typeperson'] == 'real'){ $order->update_meta_data( 'billing_typeperson', sanitize_text_field( $_POST['typeperson'] ) ); $order->update_meta_data( 'billing_code_meli', sanitize_text_field( $_POST['code_meli'] ) ); if( $order->get_customer_id() ) update_user_meta( $order->get_customer_id(), 'billing_typeperson', sanitize_text_field( $_POST['typeperson'] ) ); update_user_meta( $order->get_customer_id(), 'billing_code_meli', sanitize_text_field( $_POST['code_meli'] ) ); }else if($_POST['typeperson'] == 'legal'){ $order->update_meta_data( 'billing_typeperson', sanitize_text_field( $_POST['typeperson'] ) ); $order->update_meta_data( 'billing_shenase_meli', sanitize_text_field( $_POST['shenase_meli'] ) ); $order->update_meta_data( 'billing_code_eghtesady', sanitize_text_field( $_POST['code_eghtesady'] ) ); $order->update_meta_data( 'billing_name_sherkat', sanitize_text_field( $_POST['name_sherkat'] ) ); if( $order->get_customer_id() ) update_user_meta( $order->get_customer_id(), 'billing_typeperson', sanitize_text_field( $_POST['typeperson'] ) ); update_user_meta( $order->get_customer_id(), 'billing_shenase_meli', sanitize_text_field( $_POST['shenase_meli'] ) ); update_user_meta( $order->get_customer_id(), 'billing_code_eghtesady', sanitize_text_field( $_POST['code_eghtesady'] ) ); update_user_meta( $order->get_customer_id(), 'billing_name_sherkat', sanitize_text_field( $_POST['name_sherkat'] ) ); } } } |
کپی برداری با ذکر منبع وب سایت itlibrary.ir بلا مانع است ، سوالی در مورد مطلب آموزشی ساختن فیلد جدید در صفحه پرداخت ووکامرس woocommece داشتید در قسمت نظرات ذکر کنید . موفق باشید
Thanks for your blog, nice to read. Do not stop.
Thanks for your comment