خدمات تخصصی وردپرس؛ از رفع خطا تا توسعه اختصاصی بررسی خدمات

کد افزودن فیلد کد ملی در تسویه حساب ووکامرس با اعتبارسنجی الگوریتم ۱۰ رقمی

نوع ساختار هوک و اکشن استاندارد PHP
محل قرارگیری functions.php یا افزونه اختصاصی
نسخه تست‌شده وردپرس ۶.x / PHP 8.1+ / ووکامرس
تاثیر سرعت کاملاً سبک، بدون افت TTFB

صورت مسئله: نیاز قانونی به دریافت و راستی‌آزمایی کد ملی خریداران

برای صدور فاکتورهای رسمی، اتصال به سامانه‌های مودیان، ثبت نام بلیت یا ارسال کالا با بیمه پستی، دریافت کد ملی صحیح الزامی است. ورود اعداد جعلی نظیر ۱۱۱۱۱۱۱۱۱۱ یا اعداد کمتر از ۱۰ رقم باعث اخلال در سامانه مالیاتی و رد شدن فاکتورها می‌شود.

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

با هوک‌های woocommerce_checkout_fields و woocommerce_after_checkout_validation، فیلد کد ملی را در فرم ثبت کرده و با الگوریتم رسمی کنترل رقم دهگان و باقیمانده بر ۱۱، صحت ریاضی آن را در سرور بررسی می‌کنیم.

قطعه کد استاندارد فیلد کد ملی و اعتبارسنجی

کد زیر را برای دریافت و بررسی کد ملی اضافه فرمایید:

/*
 * Add National ID (Melli Code) Field with Official Algorithm Validation in WooCommerce
 * Validates 10-digit checksum and stores data in order meta and admin panel
 * Mahdi Jafarzadeh | WPWM
 */

// ۱. افزودن فیلد کد ملی به فرم صورتحساب
add_filter('woocommerce_checkout_fields', 'wpwm_add_national_code_field');
function wpwm_add_national_code_field($fields) {
    $fields['billing']['billing_national_code'] = [
        'type'        => 'text',
        'label'       => 'کد ملی خریدار',
        'placeholder' => 'کد ملی ۱۰ رقمی بدون خط تیره',
        'required'    => true,
        'class'       => ['form-row-wide'],
        'priority'    => 25,
    ];
    return $fields;
}

// ۲. اعتبارسنجی الگوریتم رسمی کد ملی ایران
add_action('woocommerce_after_checkout_validation', 'wpwm_validate_national_code', 10, 2);
function wpwm_validate_national_code($data, $errors) {
    if (empty($data['billing_national_code'])) {
        $errors->add('validation', 'لطفاً کد ملی خود را وارد نمایید.');
        return;
    }
    
    $code = preg_replace('/[^0-9]/', '', $data['billing_national_code']);
    
    if (strlen($code) !== 10 || preg_match('/^(d)1{9}$/', $code)) {
        $errors->add('validation', 'کد ملی وارد شده نامعتبر است.');
        return;
    }
    
    $check = (int) $code[9];
    $sum = 0;
    for ($i = 0; $i < 9; $i++) {
        $sum += ((int) $code[$i]) * (10 - $i);
    }
    $rem = $sum % 11;
    $valid = ($rem = 2 && $check == (11 - $rem));
    
    if (!$valid) {
        $errors->add('validation', 'کد ملی وارد شده از نظر ساختار ریاضی صحیح نمی‌باشد.');
    }
}

// ۳. نمایش کد ملی در پنل مدیریت سفارش
add_action('woocommerce_admin_order_data_after_billing_address', function($order){
    $code = $order->get_meta('_billing_national_code');
    if ($code) {
        echo '

کد ملی: ' . esc_html($code) . '

'; } }, 10, 1);

نحوه استفاده و محل قرارگیری کد

  1. کد را در انتهای functions.php قالب یا پلاگین اختصاصی قرار دهید.
  2. به صفحه تسویه حساب بروید و اعتبارسنجی فیلد را با کدهای تستی بررسی کنید.

نکات مهم ایمنی و نگهداری

  • الگوریتم به کار رفته تمام حالات خطای رایج از جمله تکرار ۱۰ بار یک رقم را مسدود می‌کند.
  • کد ملی به طور خودکار در متادیتاهای سفارش ذخیره شده و در فاکتورهای استاندارد قابل فراخوانی است.

💡 به اتصال ووکامرس به سامانه مودیان یا نرم‌افزارهای سپیدار و هلو نیاز دارید؟ از خدمات طراحی افزونه‌های اختصاصی وبمستر وردپرس بهره‌مند شوید.

خدمات تخصصی وبمستر وردپرس

طراحی و توسعه افزونه‌های اختصاصی ووکامرس

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

درباره

مهدی جعفرزاده، برنامه‌نویس ارشد و متخصص بهینه‌سازی، سئو فنی و امنیت وردپرس در مرجع WPWM. توسعه‌دهنده ابزارها و کدهای سبک بدون وابستگی به افزونه‌های تجاری سنگین.

رزومه و مسیر حرفه‌ای مهدی جعفرزاده
گفت‌وگو و تبادل تجربه

دیدگاه‌ها و پرسش‌ها

پاسخ‌ها، تجربه‌ها و دیدگاه‌های کاربران در یک گفت‌وگوی منظم.

0 دیدگاه
دیدگاه خود را بنویسید پرسش یا تجربه‌تان را با دیگران به اشتراک بگذارید.
ایمیل شما منتشر نمی‌شود.

گفت‌وگوهای کاربران

جدیدترین دیدگاه‌ها در ابتدا
    این گفت‌وگو با شما شروع می‌شود.

    اولین پرسش یا تجربه را ثبت کنید؛ ایمیلتان نمایش داده نمی‌شود.

    فهرست محتوا

    حساب کاربری وبمستر

    ورود یا ساخت حساب

    برای ثبت سفارش، دریافت فایل‌ها و پیگیری خدمات وارد حساب شوید.

    1. شماره موبایل
    2. تأیید شماره
    3. تکمیل حساب
    کد ورود برای این شماره پیامک می‌شود.

    ورود با رمز عبور