نویسنده: مستر نارگیل تاریخ انتشار: ۱۴۰۵/۰۵/۲۸

به صورت پیش‌فرض فیلد تلفن گرویتی فرم از شماره موبایل‌های ایران پشتیبانی نمی‌کند ولی با استفاده از پلاگین Gravity Perks Advanced Phone Field می‌توانید پشتیبانی از شماره‌های ایران را به گرویتی فرم اضافه کنید، همینطور در انتها یک کد سفارشی در اختیارتان می‌گذاریم که بدون پلاگین اضافی شماره موبایل‌های ایران را در فرم‌های خود اعتبارسنجی کنید.

فیلد موبایل ایران در گرویتی فرم

پشتیبانی از شماره موبایل‌های ایران با پلاگین گرویتی پرکس

افزونه Gravity Perks Advanced Phone Field یک پلاگین گرویتی پرکس برای اعتبارسنجی شماره موبایل است که ایران را نیز پشتیبانی می‌کند. این افزونه را دانلود و نصب کنید. این افزونه رایگان نیست، از اینجا می‌توانید آن را بخرید.

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

فیلد تلفن ایران در افزونه گرویتی پرک

پس از ذخیره این تنظیمات اکنون در تنظیمات هر فیلد تلفن، اگر تیک فعال کردن فیلد تلفن پیشرفته را بزنید، تنظیماتی که در مرحله قبل انجام دادیم به فیلد تلفن اعمال میشود.

Gravity Perks Advanced Phone Field

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

کد سفارشی زیر را در وب‌سایت خود قرار دهید.

/*
*کد اضافه کردن اعتبارسنجی موبایل به گرویتی فرم
*https://mrnargil.ir/mrnargil.ir/iran-phone-gravity-form
*/
add_action('plugins_loaded', 'gf_iran_phone_format_init');

function gf_iran_phone_format_init() {
    if (!class_exists('GFForms')) {
        return;
    }

    // Add the Iran phone format
    add_filter('gform_phone_formats', 'add_iran_phone_format');
    
    // Validate the Iran phone format
    add_filter('gform_field_validation', 'validate_iran_phone_format', 10, 4);
}

function add_iran_phone_format($phone_formats) {
    $phone_formats['iran'] = array(
        'label'       => 'Iran',
        'mask'        => false,
        'regex'       => '/^[0۰][9۹][0-9۰-۹]{9}$/',
        'instruction' => '',
    );
    return $phone_formats;
}

function validate_iran_phone_format($result, $value, $form, $field) {
    if ($field->type == 'phone' && $field->phoneFormat == 'iran') {
        // Convert Persian digits to English
        $persian_digits = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
        $english_digits = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
        $value = str_replace($persian_digits, $english_digits, $value);

        // Remove any non-digit characters
        $value = preg_replace('/[^0-9]/', '', $value);

        if (!preg_match('/^09[0-9]{9}$/', $value)) {
            $result['is_valid'] = false;
            $result['message'] = 'شماره موبایل را در این فرمت وارد کنید: ۰۹۱۲۳۴۵۶۷۸۹';
        } else {
            $result['is_valid'] = true;
            $result['value'] = $value; // Store the normalized value
        }
    }
    return $result;
}

پس از فعالسازی کد بالا به قسمت Phone Format فیلد تلفن، گزینه Iran اضافه میشود و با انتخاب آن کاربر حتما باید شماره موبایل را در فرمت شماره موبایل‌های ایران وارد کند.

تصویر تنظیمات فیلد تلفن در گرویتی فرم که گزینه ایران به آن اضافه شده است

فرمت مورد قبول علاوه بر اعداد انگلیسی، شامل اعداد فارسی نیز میشود و کاربرانی که از کیبورد فارسی استفاده میکنند میتوانند بدون مشکل فیلد را پر کنند.

خب کار تمام است، اکنون اگر کاربر در فیلد تلفن چرت و پرت بنویسد با خطای زیر مواجه خواهد شد:

شماره موبایل را در این فرمت وارد کنید: ۰۹۱۲۳۴۵۶۷۸۹

شما می‌توانید متن خطای فوق را در کد بالا ویرایش کنید.

آموزش ویدیویی اعتبارسنجی شماره موبایل ایران در گرویتی فرم