Invitaciones web
para tu boda

Blog

Validación de campo repetido: Nombre

Validamos que un formulario de Elementor con Piotnet no registre la información del formulario si es que el nombre ya se encuentra en la base de datos de Elementor.

				
					// ***********************************************
/* VALIDACION DE UN LEAD POR FORM Y CORREO */
// ***********************************************

add_action( 'elementor_pro/forms/validation/text', 'graphica_form_validate_one_lead_per_name', 10, 3 );

function graphica_form_validate_one_lead_per_name( $field, $record, $ajax_handler ) {
    
    // Validamos solo el campo con ID 'form-field-nombres'
    if ( $field['id'] !== 'nombres' ) {
        return;
    }

    $name = $field['value']; // Obtenemos el valor del campo de texto
    $form_id = $record->get_form_settings('id'); // ID del formulario actual

    // Comprobamos si ya existe este nombre en las entradas del formulario
    $leads_count = graphica_verify_names_in_form_db($name, $form_id);

    if ($leads_count > 0) {
        $ajax_handler->add_error( $field['id'] );
        $ajax_handler->add_error_message( __('Ya has enviado tu confirmación. Si necesitas más ayuda, por favor ponte en contacto por WhatsApp.', 'graphica') );
        $ajax_handler->is_success = false;
        return;
    }
}

function graphica_verify_names_in_form_db($name, $form_id) {
    $elementor_submission_query = ElementorPro\Modules\Forms\Submissions\Database\Query::get_instance();

    // Consulta para buscar nombres existentes
    $q = "
        SELECT COUNT(wpv.submission_id) AS submission_count
        FROM " . $elementor_submission_query->get_table_submissions() . " ws
        JOIN " . $elementor_submission_query->get_table_submissions_values() . " wpv
        ON ws.id = wpv.submission_id
        WHERE ws.element_id = %s AND wpv.value = %s
    ";

    global $wpdb;

    // Ejecutamos la consulta
    $result = $wpdb->get_var( $wpdb->prepare( $q, $form_id, $name ) );

    return (int) $result;
}

/**
 * Validación al entrar a la página
 * Piotnet no valida el form con el backend, lo hace desde el front.
 * Así que debemos validar al cargar la página y detach el evento de piotnet
 * en el front.
 */
add_action('wp_ajax_graphica_validate_lead', 'graphica_validate_lead_callback');
add_action('wp_ajax_nopriv_graphica_validate_lead', 'graphica_validate_lead_callback');

function graphica_validate_lead_callback() {
    $name = isset($_POST['name']) ? sanitize_text_field($_POST['name']) : '';
    $form_id = isset($_POST['form_id']) ? sanitize_text_field($_POST['form_id']) : '';

    if (empty($name) || empty($form_id)) {
        wp_send_json_error(['message' => 'Error en validación']);
        wp_die();
    }

    $leads_count = graphica_verify_names_in_form_db($name, $form_id);

    if ($leads_count > 0) {
        wp_send_json_error(['message' => 'Ya has enviado tu confirmación.']);
    } else {
        wp_send_json_success(['message' => 'Nombre válido.']);
    }

    wp_die();
}

				
			
Picture of Graphica Digital Projects
Graphica Digital Projects

Agencia de Desarrollo Web

Icono 3D de un check con fondo morado

Mensaje enviado

Lamentamos de corazon que hayas tenido una mala experiencia.

Hemos enviado los detalles y tu código único de reclamo al correo brindado en el formulario.

Pronto nos contactaremos contigo para juntos encontrar una solución.

¿Deseas revertir tu compra?

1. Generalidades

Nuestra política de devoluciones establece los términos y condiciones bajo los cuales ofrecemos reembolsos o cambios por productos virtuales adquiridos en nuestro sitio web. Al realizar una compra, aceptas esta política en su totalidad.

2. Elegibilidad para Devoluciones

  1. Plazo de Solicitud: Las solicitudes de devolución deben realizarse dentro de los 5 días posteriores a la compra.
  2. Condiciones de Devolución: No se realizarán devoluciones una vez que el producto virtual haya sido publicado en un dominio de producción o si el diseño previo ha sido aprobado por el cliente.
  3. Pagos por Error: En caso de haber realizado un pago por error, las devoluciones solo serán permitidas si no han pasado más de 2 días hábiles. Si han pasado más días, se retendrá el 5% del monto como compensación por gastos de comisiones.

3. Proceso de Devolución

  1. Solicitud: Para iniciar una devolución, contacta a nuestro equipo de atención al cliente a través de [email/contacto] con el número de pedido y una descripción detallada del problema.
  2. Revisión de la Solicitud: Revisaremos tu solicitud y te notificaremos el estado de la devolución en un plazo de 10 días hábiles.
  3. Tiempo de Devolución: El proceso de devolución de dinero tomará un mínimo de 10 días hábiles. El tiempo total de reembolso dependerá también de los plazos de procesamiento de cada entidad bancaria.

4. Excepciones y Reembolsos

  1. Excepciones: En casos de defectos técnicos o errores atribuibles a nosotros, que impidan el funcionamiento adecuado del producto, se considerará la posibilidad de una corrección o reemplazo, en lugar de una devolución.
  2. Reembolsos: No se emitirán reembolsos una vez que el producto haya sido publicado en un dominio de producción o si el diseño ha sido previamente aprobado. Para pagos por error, se aplicará una retención del 5% si han pasado más de 2 días hábiles.

5. Cambios

En lugar de un reembolso, puedes optar por solicitar modificaciones o ajustes, sujeto a evaluación y acuerdo mutuo.

6. Contacto

Para cualquier pregunta o inquietud sobre nuestra política de devoluciones, por favor contacta a nuestro equipo de atención al cliente a través de ventas@graphica.pe.

Nota: Nos reservamos el derecho de actualizar esta política en cualquier momento, y cualquier cambio será efectivo inmediatamente después de su publicación en esta página.

Paga seguro con izipay

Pagos seguros con la plataforma izipay.

Aplican los Términos y condiciones de izipay.

 

Tu privacidad es nuestra prioridad

Al comprar productos aquí, aceptas nuestros Términos y condiciones.