سبد خرید
0

سبد خرید شما خالی است.

افزودن فیلد کد ملی در فرم پرداخت

کد ملی در فرم پرداخت ووکامرس

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

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

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

add_filter('woocommerce_checkout_fields', 'custom_woocommerce_billing_fields');
 
function custom_woocommerce_billing_fields($fields)
{
    $fields['billing']['billing_ncode'] = array(
        'label' =>'کد ملی',
        'placeholder' =>'کد ملی',
        'required' => true,
        'clear' => false, 
        'type' => 'text',
        
    );
 
    return $fields;
} 

اعتبار سنجی کدملی در فرم پرداخت

خب حالا یک فیلد با نام کد ملی به فرم پرداخت اضافه شد

حالا باید یک امکانی اضافه کنیم که درستی کد ملی وارد شده را مورد سنجش قرار دهد

با اضافه کردن کد زیر در همان فایل fucntions.php

مقدار ورودی فیلد کد ملی را بررسی می‌کند و اگر کد ملی نادرست وارد شود اخطاری به کاربر نمایش داده میشود.

add_action('woocommerce_checkout_process', 'wh_phoneValidateCheckoutFields');

function wh_phoneValidateCheckoutFields() {
    $billing_ncode = filter_input(INPUT_POST, 'billing_ncode');


 if(!preg_match('/^[0-9]{10}$/',$billing_ncode))
        wc_add_notice(__('  کدملی وارد شده کمتر از ده رقم می‌باشد, لطفا کد ملی را صحیح وارد نمایید '), 'error');

    for($i=0;$i<10;$i++)
        if(preg_match('/^'.$i.'{10}$/',$billing_ncode))
       wc_add_notice(__('  کدملی نامعتبر میباشد , لطفا کد ملی را صحیح وارد نمایید .'), 'error');
    for($i=0,$sum=0;$i<9;$i++)
        $sum+=((10-$i)*intval(substr($billing_ncode, $i,1)));
    $ret=$sum%11;
    $parity=intval(substr($billing_ncode, 9,1));
    if(($ret<2 && $ret==$parity) || ($ret>=2 && $ret==11-$parity))
        return true;
       wc_add_notice(__(' کدملی نامعتبر میباشد , لطفا کد ملی را صحیح وارد نمایید .'), 'error');


    
} 

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

 

ذخیره کدملی وارد شده

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

با استفاده از کد زیر همانطور که مشاهده میکنید یک فیلد به جدول usermeta اضافه می‌شود که حاوی کد ملی (biling_code) کاربران  می‌باشد

add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['billing_ncode'] ) ) {
        update_post_meta( $order_id, 'billing_ncode', sanitize_text_field( $_POST['billing_ncode'] ) );
    }
} 

نمایش کد ملی در سفارش

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

add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );

function my_custom_checkout_field_display_admin_order_meta($order){
    echo '<p><strong>'.__('کد ملی').':</strong> <br/>' . get_post_meta( $order->get_id(), 'billing_ncode', true ) . '</p>';
} 

ودر نهایت می‌تونید از کد کامل شده زیر استفاده کنید

// code melli
add_filter('woocommerce_checkout_fields', 'custom_woocommerce_billing_fields');
 
function custom_woocommerce_billing_fields($fields)
{
    $fields['billing']['billing_ncode'] = array(
        'label' =>'کد ملی',
        'placeholder' =>'کد ملی',
        'required' => true,
        'clear' => false, 
        'type' => 'text',
        
    );
 
    return $fields;
}

add_action('woocommerce_checkout_process', 'wh_phoneValidateCheckoutFields');

function wh_phoneValidateCheckoutFields() {
    $billing_ncode = filter_input(INPUT_POST, 'billing_ncode');


 if(!preg_match('/^[0-9]{10}$/',$billing_ncode))
        wc_add_notice(__('  کدملی وارد شده کمتر از ده رقم می‌باشد, لطفا کد ملی را صحیح وارد نمایید '), 'error');

    for($i=0;$i<10;$i++)
        if(preg_match('/^'.$i.'{10}$/',$billing_ncode))
       wc_add_notice(__('  کدملی نامعتبر میباشد , لطفا کد ملی را صحیح وارد نمایید .'), 'error');
    for($i=0,$sum=0;$i<9;$i++)
        $sum+=((10-$i)*intval(substr($billing_ncode, $i,1)));
    $ret=$sum%11;
    $parity=intval(substr($billing_ncode, 9,1));
    if(($ret<2 && $ret==$parity) || ($ret>=2 && $ret==11-$parity))
        return true;
       wc_add_notice(__(' کدملی نامعتبر میباشد , لطفا کد ملی را صحیح وارد نمایید .'), 'error');


    
}
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['billing_ncode'] ) ) {
        update_post_meta( $order_id, 'billing_ncode', sanitize_text_field( $_POST['billing_ncode'] ) );
    }
}



add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );

function my_custom_checkout_field_display_admin_order_meta($order){
    echo '<p><strong>'.__('کد ملی').':</strong> <br/>' . get_post_meta( $order->get_id(), 'billing_ncode', true ) . '</p>';
}

//code melli 

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

کلیدواژه : ووکامرس
آواتار
33

برنامه نویس وب و محقق سئو و بهینه ساری وبسایت

دیدگاه کاربران
  • پیام 18 فروردین 1400 / 10:52

    ببخشید اگه بخوام قسمت کد ملی این کد رو تغییر بدم باید چیکار کنم واین کد بالای شمارو بهش اضافه کنم هرکاری کردم کارنکرد..کد من اطلاعات حقیقی وحقوقی میگیره چجوری میشه فیلد اطلاعات حقوقی بهش اضافه کرد؟شناسه ملی..کد اقتصادی..نام شرکت…https://s16.picofile.com/file/8429909742/New_Text_Document.txt.html این کد منه ولی قسمت کد ملیش درستی وغلطی رو تشخیص نمیده میشه بگین چجوری برای قسمت کد ملیش از کد بالای شما استفاده کنم؟

  • کیارش 24 فروردین 1400 / 08:44

    دستتون درد کنه.
    کار من رو به شدت راه انداخت.
    عالی، ممنون.

  • وحید 16 اردیبهشت 1400 / 14:29

    با تشکر از شما
    توی پروفایل کاربران، یک فیلد اضافه شده با نام کد ملی، اما خالیه. چطور میتونم اینها رو به هم وصل کنم؟
    و اینکه در صفحه سفارشات، در حالت پیش نمایش (که آیکن چشم داره) هم نمایش داده بشه
    ممنون میشم پاسخ بدین

    • 0
      پشتیبانی چاوک 16 اردیبهشت 1400 / 14:51

      با سلام و سپاس از نظرتون

      اگر کد داخل فایل functions قالب گذاشته باشید یک meta_key در جدول wp_usermeta که حاوی کد ملی اشخاص میباشد ساخته میشه که هر موقع نیاز به استفاده باشه میتونید از تابع
      get_user_meta( $id, ‘biling_code’,true)
      استفاده کنید

      • وحید 16 اردیبهشت 1400 / 15:00

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

        • 0
          پشتیبانی چاوک 16 اردیبهشت 1400 / 15:04

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

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

          add_action( ‘woocommerce_admin_order_data_after_billing_address’, ‘my_custom_checkout_field_display_admin_order_meta’, 10, 1 );

          function my_custom_checkout_field_display_admin_order_meta($order){
          echo ‘

          ‘.__(‘کد ملی’).’:
          ‘ . get_post_meta( $order->get_id(), ‘billing_ncode’, true ) . ‘

          ‘;
          }
          }

  • سجاد 16 شهریور 1400 / 19:56

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

  • پویا 21 شهریور 1400 / 00:01

    عالی واقعا ممنون راحت اجراش کردم .سپاس فراوان

  • afshin 22 شهریور 1400 / 12:49

    کار میکنه عین هلو
    دم شما گرم
    کار ما خیلی راه افتاد

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

توسط
تومان