Alex Cappello

Esperto in landing page e campagne pubblicitarie online

controllo campo telefono form elementor

[GUIDA] Come controllare il campo telefono nel form di Elementor

Per un cliente che si occupa di edilizia e ristrutturazioni sto gestendo una campagna Google ads per la generazione di leads.

Ci siamo accorti che a volte, alcuni utenti nella compilazione del form, invece di inserire il numero di telefono corretto (fondamentale per richiamarli e per inserirli poi nel crm e poter fare altre azioni) inserivano numeri finti come 0000000, 1111111, 2222222, ecc

Ho trovato una soluzione inserendo uno script nel file function.php che puoi copiare e incollare nel tuo sito WordPress e usarlo anche tu.

Ecco il codice:

/* controllo sul campo telefono del form */

add_action(‘elementor_pro/forms/validation/tel’, function($field, $record, $ajax_handler) {
// Rimuovi la validazione nativa
/**
* @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’]);

// Esegui la tua validazione personalizzata, ad esempio:
if (empty($field[‘value’])) {
return;
}
// Formato regex XXX-XXX-XXXX, 123-456-7890
if (preg_match(‘/[0-9]{3}(-?)[0-9]{3}(-?)[0-9]{4}/’, $field[‘value’]) !== 1) {
$ajax_handler->add_error($field[‘id’], ‘Attenzione: assicurati che il numero sia corretto…’);
}
}, 9, 3);

add_action(‘elementor_pro/forms/render_field/tel’, ‘remove_duplicate_tel_field’, 9, 3);

function remove_duplicate_tel_field($item, $item_index, $form) {
// Rimuovi il campo duplicato di tipo “tel” dal form
if ($item[‘field_type’] === ‘tel’) {
return;
}

// Continua con il rendering del campo
/**
* @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);

// Le tue condizioni, esempio:
$form->add_render_attribute(‘input’ . $item_index, ‘class’, ‘elementor-field-textual’);
$form->add_render_attribute(‘input’ . $item_index, ‘pattern’, ‘[0-9]{3}(-?)[0-9]{3}(-?)[0-9]{4}’);
$form->add_render_attribute(‘input’ . $item_index, ‘title’, __(‘Number should be in this format xxx-xxx-xxxx.’, ‘plugin-name’));
echo ‘<input size=”1″ ‘ . $form->get_render_attribute_string(‘input’ . $item_index) . ‘>’;
}

/* fine controllo sul campo telefono del form */