سلام خدمت همه کاربران عزیز ژاکد ، دوستانی که سایت فرشگاهی دارن یا قصد راه اندازی سایت فروشگاهی دارن و اگه موقع ثبت سفارش نیاز دارید که کاربر کد ملی خودش رو به صورت صحیح وارد کنه ، کافیه تا انتهای این آموزش کاربردی با ما همراه باشید.
تو حالت پیشفرض میشه هر عددی رو تو فیلد کد ملی ووکامرس اضافه کرد ، ولی اگه قصد بررسی کد ملی مشتری رو دارید تا هر عددی توسط مشتری وارد نشه و دوست ندارید افزونه نصب کنید ، کافیه کد زیر رو به انتهای فایل functions.php قالبتون اضافه کنید :
// تابع بررسی صحت کد ملی function zhacode_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="woocommerce-additional-fields"> <h3>' . __('کد ملی', 'your-theme-domain') . '</h3> <div class="woocommerce-additional-fields__field-wrapper"> <label for="billing_national_code" class="">' . __('کد ملی', 'your-theme-domain') . ' <span class="required">*</span></label> <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'] : '') . '" /> </div> </div>'; } add_action('woocommerce_after_checkout_billing_form', 'add_custom_national_code_field'); // اعتبارسنجی فیلد کد ملی function validate_custom_national_code_field($fields, $errors) { $code = isset($_POST['billing_national_code']) ? sanitize_text_field($_POST['billing_national_code']) : ''; if (!empty($code) && !zhacode_check_national_code($code)) { $errors->add('validation', __('کد ملی وارد شده معتبر نیست.', 'your-theme-domain')); } } 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 zhacode_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', 'zhacode_checkout_field_display_admin_order_meta', 10, 1 );
اگه سوالی در مورد این آموزش دارید کافیه زیر همین پست کامنت بزارید