امروزه بسیاری از فروشگاههای آنلاین به ویژه در حوزههای خاص مانند لوازم خانگی و… نیاز دارند تا اطلاعات هویتی و شناسنامهای مشتریان خود را در فرآیند ثبت سفارش و پرداخت دریافت کنند. این امر به دلایل امنیتی، مالیاتی و همچنین رفع برخی محدودیتهای قانونی صورت میپذیرد. یکی از این اطلاعات مهم، کد ملی مشتری است که باید به برگه تسویه حساب فروشگاههای آنلاین اضافه شود. به همین منظور، در این مقاله قصد داریم نحوه افزودن کد ملی به برگه تسویه حساب در ووکامرس را آموزش دهیم.

افزودن فیلد کد ملی به برگه تسویه حساب در ووکامرس
افزودن فیلد کد ملی به برگه تسویه حساب در ووکامرس به دو روش قابل انجام است که در زیر به طور کامل شرح داده خواهد شد.
افزودن فیلد کد ملی به برگه صورتحساب در ووکامرس با افزونه
اگر میخواهید با استفاده از افزونه فیلد کد ملی را به برگه تسویه حساب (تکمیل فرآیند خرید) اضافه نمایید، کافی است افزونه Checkout Field Editor را نصب کنید. سپس با استفاده از آن فیلد مورد نظرتان را اضافه و مدیریت نمایید. آموزش کار با این افزونه را قبلاً در مقالهای تحت عنوان «تغییر فیلدهای صفحه تکمیل فرآیند خرید در ووکامرس» منتشر کردیم.
نکته: یکی از عیبهایی که این روش دارد، این است که شما نمیتوانید مقدار کد ملی را اعتبارسنجی کنید.
افزودن فیلد کد ملی به برگه تسویه حساب در ووکامرس بدون افزونه
همانطور که میدانید، هموطنان ایرانی برای شناسایی هویت خود از یک کد ده رقمی به نام کد ملی استفاده میکنند. این کد ملی براساس قواعد و ضوابط خاصی تولید میشود و ارقام آن به صورت پشت سر هم و متوالی نیستند. به همین دلیل، برای اطمینان از صحت و اعتبار کد ملی، باید آن را اعتبارسنجی کرد.
قطعه کد زیر، یک تابع در زبان برنامهنویسی PHP است که میتواند اعتبار کد ملی را به راحتی بررسی کند. این تابع، کد ملی را به عنوان ورودی دریافت میکند و در خروجی، مقدار بولین (True یا False) را برمیگرداند که نشاندهنده معتبر یا نامعتبر بودن کد ملی است.
اگر میخواهید فیلد کد ملی را به صفحه تسویه حساب فروشگاه بدون نصب افزونه و با استفاده از کد اضافه کنید، قطعه کد زیر این کار را برای شما انجام خواهد داد. این کد یک فیلد شبیه فیلدهای ووکامرس به فیلدهای موجود در بخش «جزئیات صورتحساب» اضافه میکند. زمانی که کاربر فیلد را پر کند، کد ملی اعتبارسنجی شده و در صورت اشتباه بودن، به کاربر پیام خطا نمایش میدهد.
همچنین این فیلد پس از ذخیره سازی، در بخش جزئیات سفارش برای مدیر قابل نمایش خواهد بود.
قطعه کد بالا، فقط قابلیت نمایش در بخش جزئیات سفارش را دارد. در صورتی که بخواهید کد ملی موجود در جزئیات سفارش هم در قالب یک فیلد باشد و مدیر فروشگاه بتواند آن را ویرایش کند، کافی است به جای کد بالا، از کد زیر استفاده کنید.
در نوشته بالا، نحوه افزودن فیلد کد ملی در ووکامرس را برای شما توضیح دادیم. همانطور که ذکر شد، این کار میتواند تا حدودی نیاز برخی از فروشگاههای آنلاین را که به شناسایی و احراز هویت کاربران نیاز دارند، برطرف کند. در پایان، اگر درباره موضوع مطرح شده سؤال، نظر یا انتقادی دارید، خواهشمند است آن را در بخش دیدگاهها مطرح نمایید.
سؤالات متداول
افزودن کد ملی در برگه تسویه حساب به منظور احراز هویت کاربران انجام شده و از تقلب و سوء استفاده جلوگیری میکند.
افزونههای مختلفی برای ایجاد فیلدهای دلخواه به برگه تکمیل فرآیند خرید (تسویه حساب) وجود دارند که یکی از معروفترین آنها Checkout Field Editor میباشد.
بله، ممکن است کاربران به فروشگاه مورد نظر اعتماد نکرده و کد ملی خود را وارد نکنند. به منظور رفع این مشکل لازم است مدارک الکترونیکی و معتبر فروشگاه نظیر نماد اعتماد الکترونیکی و… در بهترین بخش سایت قابل نمایش باشند.
آموزش خفن و باحالی بود 😍
با این آموزش دیگه نیازی به نصب افزونه اضافی نیست و این خیلی خوبه 😎😎
من این کد رو اضافه کردم ولی در فرم تسویه حساب عبارت کد ملی بصورت انگلیسی نمایش داده میشه
مشکلش چیه؟
سلام مرتضی جان
کافیه کد زیر را به عبارت “کد ملی” تغییر بدید.
__('National Code', 'woocommerce')
موفق باشی
فیلد اجباری نیست. باید چیکار کرد؟
در صورتی که فیلد کد ملی اجباری نباشد، برای ذخیره سازی مقدار فیلد مشکلی پیش نمیآید ولی باید برای بررسی مقدار فیلد و اعتبارسنجی آن، میتوانید کد زیر را جایگزین تابع
validate_custom_national_code_field
در کد بالا کنید./**
* Validate custom national code field during checkout process
* This function validates the entered national code during the checkout process
* only if the field is not empty.
*/
function validate_custom_national_code_field()
{
$national_code = isset($_POST['billing_national_code']) ? sanitize_text_field($_POST['billing_national_code']) : '';
// Only validate if the national code field is not empty
if (!empty($national_code)) {
if (!check_national_code($national_code)) {
wc_add_notice(__('The entered national code is not valid.', 'woocommerce'), 'error');
}
}
}
add_action('woocommerce_checkout_process', 'validate_custom_national_code_field');