اضافه کردن فیلد کد ملی به برگه تسویه حساب ووکامرس، میتواند به بهبود ارتباط با مشتریان، افزایش امنیت مالی و رعایت قوانین مربوطه کمک کند. فیلد کد ملی ووکامرس یکی از فیلدهای کاربردی است که بصورت پیشفرض در صفحه تسویه حساب ووکامرس وجود ندارد اما میتوانیم با چند خط کد PHP این فیلد را اضافه کنیم البته با افزونه هم این کار امکان پذیر هست اما تا جایی که میتوانیم از نصب افزونههای اضافی خودداری کنیم چراکه نصب تغداد بالای افزونه تاثیر منفی روی سرعت سایت دارند.
گاهی برخی فروشگاهها برای فروش محصولات خود نیاز دارند که کد ملی کاربر را دریافت کنند اما این امکان در ووکامرس ارائه نشده، چرا که ووکامرس یک افزونه برای خارجی زبانها میباشد و کدملی در آن تعریف نشده است. اما نگران نباشید با افزودن چند خط کد php این امکان به ووکامرس شما افزوده میشود.
۱. افزودن فیلد کد ملی ووکامرس بدون افزونه در صفحه پرداخت
همچنین ببینید: حذف قیمت محصولات ناموجود در ووکامرس بدون افزونه
فیلد کد ملی چیست؟
فیلد کد ملی بخشی از فرم هست که از کاربر میخواهد تا (شماره ۱۰ رقمی که برای هر فرد در ایران به عنوان شناسه یکتا تعریف شده) آن را وارد کند. این شماره میتواند برای اعتبارسنجی، جستجو، گزارشگیری، تخفیف و دستهبندی مشتریان مورد استفاده قرار بگیرد. برای ایجاد و چک کردن صحت کد ملی، الگوریتم خاصی وجود داره که بر اساس ترکیب اعداد کار میکند.
برای افزودن فیلد کد ملی به یک برنامه یا وبسایت، میتوان از زبانهای برنامهنویسی مختلف مثل جاوا اسکریپت یا پیاچپی استفاده کرد. برای مثال، میتوانید از کد زیر برای افزودن فیلد کد ملی به صفحهی تسویه حساب ووکامرس استفاده کنید یا از یه تابع بخصوص برای اعتبارسنجی سادهی کد ملی با جاوا اسکریپت به کمک Regex استفاده کنید.
تشخیص صحت کد ملی وارد شده
ممکن است این سوال برای شما هم پیش بیاید که اگر کسی کد ملی اشتباه وارد کرد، عمدا یا سهوا، آیا این مورد را تشخیص خواهد داد؟ باید بگوییم: بله! کد به نحوی عمل میکند که اگر کد ملی وارد شده، اشتباه باشد، کاربر پیام خطا دریافت میکند. حال همراه ما باشید تا این امکان را به سایت وردپرسی خود اضافه کنیم.
آموزش افزودن کد به قالب سایت از طریق پیشخوان وردپرس
برای اضافه کردن فیلد کد ملی به برگه تسویه حساب ووکامرس از طریق پیشخوان وردپرس، میتوانید این مراحل را دنبال کنید:
۱. وارد پنل مدیریت وردپرس شوید.
۲. به بخش نمایش > ویرایشگر پرونده پوسته بروید و قالب فعال سایت را انتخاب کنید.
۳. روی توابع پوسته (functions.php) کلیک کنید.
۴. کد زیر را در انتهای فایل قرار دهید و ذخیره کنید.
آموزش افزودن کد به قالب سایت از طریق هاست
همچنین میتوانید از طریق هاست کد را به برگه تسویه حساب ووکامرس اضافه کنید:
۱. از طریق سیپنل یا دایرکت ادمین وارد هاست سایتتان شوید.
۲. از طریق File manager وارد دایرکتوری Public html شوید.
۳. سپس وارد مسیر wp-content/themes/your-theme-name شوید. دقت کنید اگر قالب فرزند روی سایت شما فعال است کد را در قالب فرزند قرار دهید چراکه پس از آپدیت قالب کدها پابرجاست.
۴. حال فایل functions.php را پیدا کنید و با کلیک راست روی آن، فایل را ویرایش کنید و کد را در انتهای فایل قرار دهید و ذخیره کنید.
قطعه کد زیر را کپی و در فایل functions.php قالب جایگذاری کنید و کار تمام است!
// national code function 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) && ! 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 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', 'checkout_field_display_admin_order_meta', 10, 1 );
حالا به صفحه پرداخت سایت خود مراجعه کنید و مطمئن شوید که فیلد کدملی به فرم اضافه شده باشد. لازم به ذکر است اطلاعات این فیلد همانند مابقی فیلدها در قسمت سفارشات ذخیره و قابل مشاهده است.
با انجام این مراحل، یک فیلد جدید با عنوان “کد ملی” به برگه تسویه حساب اضافه خواهد شد.
اگر نیاز دارید که یک فیلد اختصاصی دیگر به فرم پرداخت اضافه کنید، میتوانید مقاله زیر را مشاهده نمایید:
۲. افزودن فیلد کد ملی ووکامرس با افزونه در صفحه پرداخت
اگر به هر دلیلی نمیخواهید از روش کدنویسی برای افزودن فیلد کدملی به صفحه پرداخت استفاده کنید، میتوانید با استفاده از افزونه ویرایشگر فرم پرداخت ووکامرس این کار را انجام دهید.
۱. در ابتدا افزونه را از مخزن وردپرس نصب و فعال کنید.
۲. سپس از پیشخوان وارد بخش ووکامرس > فرم پرداخت شوید. سپس روی +افزودن فیلد کلیک کنید.
۳. در این صفحه اطلاعات فیلد کدملی را طبق تصویر زیر وارد کنید.
۴. در نهایت روی دکمه ذخیره و بستن کلیک کنید.
دقت داشته باشید در این روش اعتبارسنجی کدملی صورت نمیپذیرد.