تشخیص صحت کد ملی در ووکامرس

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

 

به طور خلاصه، تشخیص فیلد کد ملی در خرید فروشگاهی آنلاین اهمیت بالایی دارد. این عمل باعث می‌شود که فروشگاه بهترین خدمات را به مشتریان ارائه دهد، هویت مشتریان را تأیید کند، از سوءاستفاده‌ها و تقلب‌ها جلوگیری کند، مقررات قانونی را رعایت کند و تجربه خرید بهبود یابد.

 

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

  1. ویرایش فایل functions.php:
    ابتدا باید فایل functions.php قالب فعلی خود را ویرایش کنید. این فایل در مسیر wp-content/themes/theme-name/functions.php قرار دارد. به جای “theme-name”، نام قالب شما را قرار دهید.
  2. اضافه کردن کد:
    در فایل functions.php، کد زیر را در انتهای فایل قرار دهید:
// تابع بررسی صحت کد ملی
function mweb_check_national_code($code) {
	if( !preg_match('/^[0-9]{10}$/',$code) )
		return false;
	for( $i=0; $i<10; $i++ )
		if( preg_match('/^'.$i.'{10}$/',$code) )
			return false;
		for( $i=0,$sum=0;$i<9;$i++ )
			$sum += ((10-$i) * intval(substr($code, $i,1)));
	$ret = $sum%11;
	$parity = intval(substr($code, 9,1));
	if( ($ret<2 && $ret==$parity) || ($ret>=2 && $ret==11-$parity) )
		return true;
	
	return false;
}

// اضافه کردن فیلد کد ملی به صفحه پرداخت ووکامرس
function add_custom_national_code_field() {
    echo '<div class="form-row form-row-wide woocommerce-additional-fields__field-wrapper">
                <label for="billing_national_code">' . __('کد ملی', 'your-theme-domain') . ' <span class="required">*</span></label>
                <span class="woocommerce-input-wrapper"><input type="text" class="input-text" name="billing_national_code" id="billing_national_code" value="' . esc_attr(isset($_POST['billing_national_code']) ? $_POST['billing_national_code'] : '') . '" /></span>
        </div>';
}
add_action('woocommerce_after_checkout_billing_form', 'add_custom_national_code_field');
 
// اعتبارسنجی فیلد کد ملی
function validate_custom_national_code_field() {
    $code = isset($_POST['billing_national_code']) ? sanitize_text_field($_POST['billing_national_code']) : '';
 
    if (!empty($code) && !mweb_check_national_code($code)) {
		wc_add_notice( __( 'کد ملی وارد شده معتبر نیست.' ), 'error' );
    }
}
add_action('woocommerce_checkout_process', 'validate_custom_national_code_field');

// ذخیره کد ملی در سفارش
function save_custom_national_code_field($order_id) {
    if (!empty($_POST['billing_national_code'])) {
        update_post_meta($order_id, 'billing_national_code', sanitize_text_field($_POST['billing_national_code']));
    }
}
add_action('woocommerce_checkout_update_order_meta', 'save_custom_national_code_field');

// نمایش کد ملی در قسمت سفارشات ادمین
function mweb_checkout_field_display_admin_order_meta($order){
    echo '<p><strong>'.__('کد ملی').':</strong> ' . get_post_meta( $order->id, 'billing_national_code', true ) . '</p>';
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'mweb_checkout_field_display_admin_order_meta', 10, 1 );

دیدگاه کاربران
  • آراد ۲۳ بهمن ۱۴۰۲

    سلام و وقت بخیر چطور میتونم موقعیت کد ملی در برگه تسویه حساب تغییر بدم؟

    • ماهدیس وب ۲۳ بهمن ۱۴۰۲

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

  • zed ۲۱ دی ۱۴۰۲

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

    • ماهدیس وب ۲۱ دی ۱۴۰۲

      سلام وقت شما هم بخیر
      بله خط 31 رو به خط زیر تبدیل کنید
      if ( !mweb_check_national_code($code)) {

  • behrad ۱۲ دی ۱۴۰۲

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

    • ماهدیس وب ۱۲ دی ۱۴۰۲

      سلام و عرض ادب
      داخل فایل myfunction.php قرار بدین

  • امیر حاجی زاده ۱۱ آذر ۱۴۰۲

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

    • کارشناس ۱۱ آذر ۱۴۰۲

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

  • آواتار
    حسن جون ۲ آذر ۱۴۰۲

    سلام
    این کد ملی از چه طریقی اعتبار سنجی میشه؟
    فقط تعداد ارقام صحت سنجی میشه یا مالکیت کد ملی

    • ماهدیس وب ۲ آذر ۱۴۰۲

      با سلام
      تشخیص مالکیت نیازمند api و مجوز دارد . این کد صحت ساختاری کد ملی را بررسی می کند(صرفا تعداد ارقام نیست و صحت ان را نیز بررسی میکند )

  • iman ۱۸ آبان ۱۴۰۲

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

    • ماهدیس وب ۱۸ آبان ۱۴۰۲

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

  • جمال پوستی ۱ آبان ۱۴۰۲

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

    • ماهدیس وب ۲ آبان ۱۴۰۲

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

  • آواتار
    arman2web ۲۷ مهر ۱۴۰۲

    عالی و کاربردی ، ممنون از شما

ارسال دیدگاه

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

کد امنیتی Time limit is exhausted. Please reload CAPTCHA.