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

اعتبار سنجی فیلد شماره تلفن در المنتور
4.2/5 - (5 امتیاز)

در هنگام استفاده از ویجت فرم المنتور، زمانی که از فیلد شماره تلفن استفاده کرده باشید، متوجه شده اید که این فیلد هر نوع شماره ای از 1 رقم تا 20 رقم بدون محدودیت دریافت می کند. یعنی ممکن است کاربر شماره را به صورت 0912 ناقص وارد کند و فرم هیچ تاییدی انجام ندهد.

خب اگر فرم تماسی که ایجاد کرده اید، لازم است شماره تلفن را به صورت صحیح از کاربر دریافت کند، این فیلد ممکن است با کمی خطا، شماره را از کاربر دریافت کند. یا حتی زمانی که کاربر قصد دارد یک شماره موبایل نادرست را فقط برای ارسال فرم استفاده کنید می توانید از این روش استفاده کنید.

فرمت تلفن فرم ویجت

در این ترفند قصد داریم تا یک فرمت اجباری به فیلد شماره تماس المنتور داده تا هنگام وارد کردن شماره توسط کاربر هیچ اشتباهی رخ ندهد.

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

اضافه کردن کد اعتبار سنجی

ابتدا کد زیر را در فایل Function.php قالب تون در انتهای کد های دیگر قرار دهید. از مسیر wp-content/themes وارد پوشه قالب رفته و فایل function را ویرایش کنید.

بعد از قرار دادن این کد، فرمت وارد شده درفیلد شماره تلفن باید به صورت 09xxxxxxxx باشد.

add_action( 'elementor_pro/forms/validation/tel', function( $field, $record, $ajax_handler ) {
	//remove native validation
	/**
	 * @var \ElementorPro\Modules\Forms\Module $forms_module
	 */
	$forms_module = \ElementorPro\Plugin::instance()->modules_manager->get_modules( 'forms' );
	remove_action( 'elementor_pro/forms/validation/tel', [ $forms_module->field_types['tel'], 'validation' ] );

	// run your own validation, ex:
	if ( empty( $field['value'] ) ) {
		return;
	}
	// Match this format 09XXXXXXXX, 0912345678
	if ( preg_match( '/[0-0]{1}[9-9]{1}[0-9]{9}/', $field['value'] ) !== 1 ) {
		$ajax_handler->add_error( $field['id'], 'مطمئن شوید شماره تلفن با فرمت 09xxxxxxxx باشد, eg: 0912345678' );
	}
}, 9, 3 );

add_action( 'elementor_pro/forms/render_field/tel', function( $item, $item_index, $form ) {
	//remove native render
	/**
	 * @var \ElementorPro\Modules\Forms\Module $forms_module
	 */
	$forms_module = \ElementorPro\Plugin::instance()->modules_manager->get_modules( 'forms' );
	remove_action( 'elementor_pro/forms/render_field/tel', [$forms_module->field_types['tel'] , 'field_render' ], 10, 3 );

	// add your custom render ex:
	$form->add_render_attribute( 'input' . $item_index, 'class', 'elementor-field-textual' );
	$form->add_render_attribute( 'input' . $item_index, 'pattern', '[0-0]{1}[9-9]{1}[0-9]{9}' );
	$form->add_render_attribute( 'input' . $item_index, 'title', __( 'شماره تلفن باید با 09 شروع شود.', 'plugin-name' ) );
	echo '<input size="1" ' . $form->get_render_attribute_string( 'input' . $item_index ) . '>';
}, 9, 3 );

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

تاییده شماره تلفن در المنتور

امیدواریم که از این ترفند هم به خوبی استفاده کرده باشید. در صورت مشکل در اجرای این آموزش از بخش نظرات با ما در تماس باشید.

25 پاسخ

  1. علت یک فیلد شماره همراه دیگه ایجاد شدن اینه که یک کد رو دوبار استفاده کردین. من از نصفه بالا تا قبل از add action دوم وارد کردم و مشکل برطرف شد.

  2. سلام ببخشید وقتی من این کدو وارد میکنم فیلد ورودی شماره تماسم دوبل میشه ینی یه کپی هم زیرش ایجاد میشه

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

      1. با سلام
        این مورد ارتباطی به ایجاد فرم جدید ندارد و فقط روی فیلد های فرم فعلی تاثیر میگذارد. لطفا مراحل رو یکبار مجدد انجام بدید.

        1. سلام.
          منم وقتی تیکه کد فوق رو در فانکشن سایت وارد میکنم فیلد شماره تماس دوبل میشه

    2. سلام
      منم این کد رو وارد میکنم فیلد ورودی شماره تماسم دوبل میشه ینی یه کپی هم زیرش ایجاد میشه.چندین بار هم از اول مراحل رو با دقت انجام دادم اما همیشه همینطور میشه.در این شرایط هرچی کاربر اطلاعات تماسش رو در هر کدام از فیلدهای تماس بدرستی وارد میکنه باز هم فرم سابمیت نمیشه… چطور میشه این مشکل را حل کرد؟؟

  3. خیلی ممنون، پست کاربردی بود، فقط چطور هست که تو کد ها شماره موبایل 10 رقمی دادین اما درست عمل می کنه؟
    هم شماره موبایل 0912345678 هم فرمت 09xxxxxxxx … فقط الگو را [0-0]{1}[9-9]{1}[0-9]{9} یازده رقمی قرار دادین.
    سپاس از سایت خوبتون

  4. سلام
    من تیکه کدی که داخل سایتتون واسه چک کردن فیلد شماره تلفن داده بودین رو تو سایتم داخل فایل فانکشن وارد کردم
    ارور داد..
    من هم دوباره پاکشون کردم
    الان اصلا بالا نمیاد سایتم.. دیگه
    راهکارش چیه؟

    1. با سلام
      ممکنه کد های دیگر از این فایل را حذف کرده باشید. بک آپ سایت را دانلود کنید و فقط فایل Functions.php را جایگزین فعلی کنید.

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

    1. با سلام
      می توانید نام کاربری را به عنوان موبایل دریافت کنید.

  6. سلام اگر میخام بین المللی باشه چطور میشه اینو انجام داد؟
    بعد اضافه کردن کد از طریق کنترل پنل یا وردپرس میشه انجام داد؟

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

  7. با سلام ، من می خوام کد تایید برای کاربر ارسال بشه و با وارد کردن اون کد حساب کاربری قابلیت خرید پیدا بکنه ، باید چه کار کنم ؟

    1. با سلام
      با استفاده از افزونه Action Pack می تونید کد تایید ارسال کنید. البته فعلا با ایمیل میشه. اپراتور های موبایل ایرانی هم بزودی اضافه خواهند شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *