es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema de obtención del nombre del país en el formulario de contacto 7 al seleccionar un destinatario con tuberías.

Estoy utilizando un menú desplegable de país en mi formulario de contacto 7. Se ve así [select* country "Canadá | team1@website.com,team3@website.com" "México | team2@website.com" "Zimbabue | team3@website.com"], funciona bien si lo uso para obtener el primer valor mediante [filacountry] y el segundo valor (después del símbolo de tubería) mediante [country] en la sección del correo. Pero quiero guardarlo en la base de datos de clientes e intentar obtener el nombre del país mediante esto

$your_country = $form_data['_raw_country'];
$country = implode( ', ', (array) $your_country );

devuelve solo el correo electrónico pero no el país. También intenté esto

$your_country = $form_data['country'];
$country = implode( ', ', (array) $your_country );

Devuelve en blanco.
Este es mi código de referencia:

function contactform7_before_send_mail( $contact_form, $abort, $submission ) {
    // establece los detalles de tu base de datos.
    $mydb = new wpdb( 'usuario', 'contraseña', 'baseDeDatos', 'localhost' );
    if ( $submission ) {
        $form_data = $submission->get_posted_data();
        $your_country = $form_data['_raw_country'];
        $country = implode( ', ', (array) $your_country );
        $mydb->insert(
            'nombreTabla',
            array(
                'nombreCompleto'        => sanitize_text_field( $form_data['NombreCompleto'] ),
                'país'         => $country,
                'nombreEmpresa'     => sanitize_text_field( $form_data['NombreEmpresa'] ),

            ),
            array( '%s', '%s', '%s' )
        );
    }
}
add_action( 'wpcf7_before_send_mail', 'contactform7_before_send_mail', 10, 3 );

Este es el enlace de referencia https://contactform7.com/selectable-recipient-with-pipes/

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás teniendo problemas para obtener el valor del menú desplegable de país en tu formulario de contacto 7 para guardarlo en tu base de datos de clientes.

    Cuando usas $form_data['_raw_country'], solo obtienes la dirección de correo electrónico asociada con la opción de país seleccionada. Para obtener el nombre real del país, debes usar en su lugar $form_data['country'].

    Sin embargo, parece que el valor devuelto por $form_data['country'] está en blanco. Esto puede ser porque no has especificado un nombre para el campo select en tu formulario de contacto.

    Para solucionar esto, modifica tu código del menú desplegable de país para incluir el atributo name de esta manera:

    [select* country name:country "Canadá | team1@website.com,team3@website.com" "México | team2@website.com" "Zimbabue | team3@website.com"]
    

    Luego, usa $form_data['country'] en tu código para guardar el nombre del país seleccionado en tu base de datos de clientes.

    // Obtén el nombre del país seleccionado
    $country = sanitize_text_field( $form_data['country'] );
    
    // Insertar en la base de datos
    $mydb->insert(
      'nombreDeTabla',
      array(
        'nombreCompleto'  => sanitize_text_field( $form_data['FullName'] ),                
        'país'            => $country,
        'nombreEmpresa'   => sanitize_text_field( $form_data['CompanyName'] ),
    
      ),
      array( '%s', '%s', '%s' )
    );
    

    Espero que esto te ayude. Avísame si tienes alguna otra pregunta.

Comments are closed.