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

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

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

اعتبارسنجی شماره موبایلهای ایران در گرویتی فرم با کد سفارشی
کد سفارشی زیر را در وبسایت خود قرار دهید.
برای قرار دادن کد سفارشی در سایتهای وردپرسی از سه روش زیر میتوانید استفاده کنید:
- قرار دادن کد در فایل functions.php تم فرزند
- استفاده از پلاگینهای کمکی مانند code snippets
- ساخت پلاگین اختصاصی خود
بیشتر بخوانید: آموزش نحوه اضافه کردن کد سفارشی در وردپرس
/*
*کد اضافه کردن اعتبارسنجی موبایل به گرویتی فرم
*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 اضافه میشود و با انتخاب آن کاربر حتما باید شماره موبایل را در فرمت شماره موبایلهای ایران وارد کند.

فرمت مورد قبول علاوه بر اعداد انگلیسی، شامل اعداد فارسی نیز میشود و کاربرانی که از کیبورد فارسی استفاده میکنند میتوانند بدون مشکل فیلد را پر کنند.
خب کار تمام است، اکنون اگر کاربر در فیلد تلفن چرت و پرت بنویسد با خطای زیر مواجه خواهد شد:
شماره موبایل را در این فرمت وارد کنید: ۰۹۱۲۳۴۵۶۷۸۹
شما میتوانید متن خطای فوق را در کد بالا ویرایش کنید.
پاسخ دادن به حسام لغو پاسخ