Seleccionar destinatario de email contact form 7 en WordPress

publicado en: Tutoriales, Wordpress | 33

Actualmente estoy montando un sitio de wordpress (entre otras cosas), se trata de una web corporativa. Esta empresa tiene distintas sedes y por lo tanto puedes querer contactar con diferentes personas. Hasta aqui fácil, haces una sección de contacto con las diferentes direcciones, telefonos y emails y listo, que llamen, vayan o escriban a donde quieran ¿pero qué pasa si quieres meter un formulario de contacto? bueno pordrias hacerlo a mano, pero eso implicaria preocuparte de validaciones, envios con ajax y demás… Hoy en día ni me lo planteo, uso el plugin de wordpress contact form 7 (debería venir por defecto la verdad porque es de uso obligado) que te ayuda con todo esto.

Nunca había tenido problema, creas tu formulario le configuras el destinatario, una copia de cortesia para el que ha escrito tenga constancia y todo funcionando perfecto. Pero hoy necesitaba algo más, queria que pudieran escoger a que sede enviar ese formulario de una forma cómoda. Pensando un poco he decidido poner un <select> de forma que pueda poner a quien quiero que llegue.

[select destinatario "ciudad1@ejemplo.com"
                    "ciudad2@ejemplo.com"
                    "ciudad3@ejemplo.com"]

El «problema» de esto es que directamente visualizaremos en el desplegable las direcciones de correo a las que vamos a dirigir el mensaje y mi idea era poner algo más comodo de cara al usuario, por ejemplo el nombre de la ciudad o el departamento al que va dirigido. La solución es bastante sencilla:

 

[select destinatario "Ciudad 1|ciudad1@ejemplo.com"
                    "Ciudad 2|ciudad2@ejemplo.com"
                    "Ciudad 3|ciudad3@ejemplo.com"]

 

Una vez que lo tenemos sólo hay que añadir al campo para de la configuración nuestro [destinatario] y ya lo tendriamos tal y como lo queremos. Sencilla solución para este pequeño problema que os planteaba.

¿Y vosotros que opinais de wordpress contact form 7? ¿Lo usáis? ¿Usáis alguno equivalente?

33 comentarios

  1. 3rn3st0

    Si lo que deseas es que no se vean las direcciones de correo electrónico, sólo debes usar el caracter «pipe» de la siguiente manera:
    [select recipient «Nombre que quieres que vea el Usuario|direccion@tuservidor.com» «Otra descripción|otrocorreo@tuservidor.com» «Lo último del ejemplo|nadamas@tuservidor.com»]

  2. Alejandro

    Si se añade mediante etiqueta por ejemplo en correo del destinatario [enviara] este produce error del sintaxis al no especificar el correo en dicha caja

    • dwalins

      Hola Alejandro,

      Si es normal, porque no tienes el correo hasta que no se manda el formulario, si quieres recoger el mismo correo que introducen tienes que recurrir a otro sistema que recoja el correo antes de enviarse, ¿que es exactamente lo que quieres conseguir?

      Un saludo

  3. Carlos Santana

    Hola, a mi me pasa lo mismo, error de sintaxis, me gustaria que no se mostraran los demas correos de opcion y que cuando la persona comience a escribir el nombre por ejemplo, le aparezca la opcion o el nombre de la persona a la que se lo va enviar. Para que no elija la opcion que sea, si no la que debe elegir. Se podra ocultar la lista de opciones? saludos

    • dwalins

      Hola Carlos,

      ¿Que error de sintaxis te aparece? Ahora mismo ese plugin lo que cuenta es con una lista desplegable, podrias modificarla para que te saliera alguna más avanzda que incluya un buscador pero siempre saldria el resto de correos mientras buscas, pero que no salga nada es un poco raro, ¿porque no deberían salir las otras direcciones? No lo acabo de comprender del todo para intentar darte una solucion

      Un saludo

  4. Carlos Santana

    Hola, lo ideal en mi caso es que solo ven un destinatario, porque muestra muchas opciones y seria mas sencillo para la persona elegir el que necesita y no ver tantos, que cuando comience a escribir aparezca solo la opcion que necesita o las que mas se parezcan 🙂 El error de sintaxis salio el el formulario de contact form 7 en la seccion de correo electronico y dice [location] El campo tiene errores de sintaxis. Me manda a esta liga http://contactform7.com/configuration-errors/#mail.recipient:error_invalid_syntax

    • dwalins

      Hola Carlos,

      Tal y como está pensado el plugin no hace eso y va a costar mucho que lo haga, lo unico que podria ser algo más sencillo de lograr seria incluir un desplegable con un buscador y que el usuario pueda escribir, asi se van limpiando las opciones.

      El error que te da es al utilizar una variable como correo en lugar de una dirección de correo, ¿el campo location es obligatorio en tu formulario?

      Un saludo

    • dwalins

      Hola Pedro,
      ¿Con distintos emails te refieres al cuerpo del mensaje o a diferentes direcciones? A diferentes direcciones no vas a tener problema, pero para crear diferentes cuerpos de mensajes está más complicada la cosa, si es algo simple quizás podrias usar el valor de un select pero no es la mejor solución.

      ¿Que quieres crear exactamente?

  5. Adrián

    Buenas, agradezco mucho tu publicación, creo que puede ser muy util, mi problema es que he estado intentando utilizar este recurso, pero a la hora de introducir la etiqueta en el campo «Para» me indica un error de sintaxis, mensaje exacto «El campo tiene errores de sintaxis», he estado intentando solucionarlo y no doy con la tecla, no se si a alguno os ha pasado o como lo habéis solucionado, muchas gracias

  6. Diego Jimenez

    la solución para que no arroje error de sintaxis en el campo «para» es definiendo el select como obligatorio, ejemplo:
    [select* recipient «opcion1|email1@gmail.com» «opcion2|email2@gmail.com» «opcion2|email2@gmail.com»]

  7. Raymundo Beltran Munguia

    hola super bien los comentarios de cada uno, muchas gracias , pero si quisiera que al seleccionar una de las 3 opciones mande a dos destinatarios ?? ejemplo partiendo de Diego Jimenez :

    [select* recipient “opcion1|email1@gmail.com , email2@gmail.com” “opcion2|email1@gmail.com , email2@gmail.com” “opcion2|email2@gmail.com , email2@gmail.com”]

    las comas no funcionan como podría ser ?

    Gracias por sus comentarios

    • dwalins

      Hola,
      Voy a investigarlo pero con dos no se si será posible. ¿Has probado usando punto y coma (;)?

      Un saludo

  8. Marcelo

    Hola Dwalins, excelente aporte me ha servido muchísimo… sólo tengo un pequeño problema y es con el correo que llega a la persona encargada, por ejemplo:
    —-
    De: test
    Teléfono: 1234567
    Departamento: Caldas
    Ciudad: Manizales
    Concesionario: correo@gmail.com
    —-
    Como puedes ver en donde dice «concesionario» no me sale el nombre del concesionario sino que me sale el correo de la persona que tenía asignada para ese concesionario. Sabes como solucionarlo? que etiqueta usar?

    Muchas gracias y de nuevo excelente aporte!

    • Marcelo

      Explicándome mejor y relacionándolo con el ejemplo que tu planteas («Ciudad 1|ciudad1@ejemplo.com»), en el mensaje en «concesionario» que llega al destinatario es: ciudad1@ejemplo.com y no el nombre «Ciudad 1» que sería lo ideal.

    • dwalins

      Hola Marcelo,

      Prueba a hacer lo siguiente, donde quieras que aparezca el nombre que le has asignado escribe [_raw_{nombre del campo}] y asi te deberia aparecer. Pruebalo y me cuentas

      Un saludo

    • Marcelo

      Hola Dwalins,
      Gracias por la respuesta, en realidad hice la prueba y no me funcionó, no me carga ningún dato, sale el mismo código que ingreso en el contactform7 ([_raw_{xxxxx}]).

    • dwalins

      Hola Marcelo,

      ¿Lo has puesto con o sin las llaves? Tiene que ser asi [_raw_xxxxx]

      Un saludo

    • Marcelo

      Correcto, era eso, ya quedó perfecto… Que talento, mil gracias!

  9. Enrique Pomallihua Aucasi

    Hola, gracias por sus consejos. Tengo un emprendimiento de delívery en un condominio de 5 torres, mi consulta es: cómo hacer cuando el cliente seleccione una torre de destino ejemplo «torre 1» (en la página Finalizar Compra
    ) se envie a un e-mail a torre1@email.com y asi con las demás?. Gracias de antemano por sus respuestas. Mi web es:

    estampadosmandy.cl

    • dwalins

      Hola Enrique,

      Esta explicación es para el plugin contact form 7, lo que tu comentas parece estar ligado al proceso de compra que va a depender de como lo gestiones, en este caso no se como has configurado woocommerce para hacer aparecer las torres. Lo más acertado seria usar el hook woocommerce_order_status_ para recuperar los datos del pedido (incluida la torre) una vez cumple los requisitos de pedido aceptado y desde ahi enviar el email a la torre correspondiente.

      Un saludo

  10. Daniel

    hola para poner varios correos en un campo del select trate de esta forma pero no funciono [select* opciones «actualizar|email1@hotmail.com» «nuevo|mail2@gmail.com, mail3@gmail.com» «cerrar|mail4@gmail.com»] tambien con ; y [] entre los correos gracias por su atencion

    • dwalins

      Hola Danie,
      Prueba sin utilizar el asterisco (*) ya que en este caso el valor del select no puede ser nulo por lo que puede estar dando problemas por eso.

      Un saludo

  11. sonia

    Buenas estoy mirando tu aporte que es justo lo que ando buscando, pero no me funciona, te cuento:
    tengo un apartado provincias y estas deberían estar agrupadas en 8 zonas que corresponden a 8 mails de las delegaciones en España, a las que según selecciones la provincia llegara la consulta, pero no es así no me llega que hago mal, me llega al mail que tengo por defecto en contact 7:

    [text* text-345 placeholder «Nombre»]
    [email* email-159 placeholder «Email»]
    [select* menu-182 include_blank «Panel detección temperatura corporal» «Cámara térmica portátil» «Cámara térmica»]
    [checkbox* checkbox-282 «Profesional sector eléctrico» «Acepto la política de privacidad»]
    [select* Provincia «Ciudad 1|sonia.domenech@golmar.es.com» «Ciudad 2|ciudad2@ejemplo.com» «Ciudad 3|ciudad3@ejemplo.com»]
    [submit «Enviar»]

    • dwalins

      Hola Sonia,
      Lo que mandas parece correcto, por lo que driria que el problema puede estar en la configuración del envío que no hayas puesto el campo correspondiente dentro de la pestaña de «correo electronico», ¿el campo para es [Provincia]?
      Además si vas a hacer el select obligatorio puedes añadir una opción en blanco primero, sino no tiene sentido hacerlo requerido ya que siempre va a tener un valor por defecto, en este caso Ciudad 1

      Espero que esto te ayude, un saludo

  12. sonia

    Hola Dwallins,
    Me funciono correcto ahora me surge el problema de como hacer que me salga el campo de la ciudad de donde viene la consulta:

    [select recipient include_blank «Ciudad 1|ciudad3@ejemplo.com» «Ciudad 2|ciudad3@ejemplo.com» «Ciudad 3|ciudad3@ejemplo.com»]

    Nombre:[text-345]
    Email: [email-159]
    Provincia:[_raw_recipient]
    Consulta: [menu-182]

    Disculpa las molestias pero me has abierto el cielo

    • dwalins

      Hola Sonia,

      Me alegra ver que lo has encontrado, efectivamente para utilizar el valor tienes que usar [_raw_NOMBREDELCAMPO]

      Un saludo

  13. Jair Sehuanes

    Hola, tengo una consulta de algo que quiero aplicar.
    Tengo una empresa que tiene 2 departamentos; (Ventas y Producción) he creado un formulario de pedido donde los vendedores colocan los productos con los campos de: «Cantidad» , «Descripción» , «Precio»
    Lo que quiero hacer es que al correo de ventas llegue la información suministrada en los 3 campos del formulario.
    Pero al correo de producción NO llegue el campo de precio.

    Gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *