Contact Form 7 - Ejecutar código DESPUÉS del envío del correo

30 jul 2015, 16:38:54
Vistas: 72.2K
Votos: 9

He descubierto cómo hacer algo ANTES de enviar el correo, pero también necesito que ocurra una acción DESPUÉS de que se haya enviado.

Intenté usar wpcf7_after_send_mail pero sin éxito...

Cualquier ayuda sobre este tema sería muy apreciada.

4
Comentarios

¿No puedes usar los ajustes adicionales en la configuración del plugin del formulario de contacto? - http://contactform7.com/additional-settings/

Andy Andy
30 jul 2015 16:51:08

Justo estaba leyendo sobre eso mientras busco en Google, pero no sé dónde están esos ajustes. ¿Esto permite redirigir un formulario específico? Solo necesito que un formulario en particular sea redirigido, no todos los formularios.

Menno van der Krift Menno van der Krift
30 jul 2015 16:58:56

¿Quizás podrías aplicar este tipo de enfoque?

birgire birgire
30 jul 2015 17:00:03

Ahh acabo de encontrarlo y funciona de maravilla :D Mi Wordpress está en holandés, por eso no podía encontrar los Campos Adicionales tan fácilmente xD

Menno van der Krift Menno van der Krift
30 jul 2015 17:05:33
Todas las respuestas a la pregunta 3
5
17

Para cualquiera que todavía llegue aquí buscando una forma de ejecutar código PHP después de que se haya enviado el correo, Contact Form 7 tiene un hook wpcf7_mail_sent exactamente para esto. El uso se ve algo así:

// ...en functions.php
add_action('wpcf7_mail_sent', function ($cf7) {
    // Ejecuta código después de que se haya enviado el correo
});

También existe wpcf7_mail_failed, que te permite engancharte cuando el correo falla al enviarse.

5 ene 2017 16:10:19
Comentarios

No funcionó para mí.

Pons Pons
1 mar 2017 18:31:30

¿Qué versión de CF7 estás usando? Yo lo tengo funcionando con la versión 4.6.1 y WordPress 4.7.2

adamtomat adamtomat
2 mar 2017 11:02:36

Creo que encontré el error en mi código: había envuelto mi llamada add_action con un chequeo has_action. Pero probablemente cuando mi código (dentro de un plugin) se ejecutaba, la acción wpcf7_mail_sent aún no existía. Eliminar el chequeo has_action hizo que funcionara.

Pons Pons
3 mar 2017 11:24:31

¿Qué es este parámetro ($cf7)? ¿Lo necesito?

Kevin.a Kevin.a
15 mar 2017 12:48:48

Es una instancia de WPCF7_ContactForm, que contiene mucha información sobre el formulario que fue enviado.

Por ejemplo, podrías obtener el ID del formulario con $cf7->id(). Puede que no lo necesites, en cuyo caso puedes omitirlo hasta que surja la necesidad.

Aquí hay un enlace a la clase en GitHub por si quieres revisar qué hace: https://github.com/wp-plugins/contact-form-7/blob/master/includes/contact-form.php

adamtomat adamtomat
16 mar 2017 11:05:08
3

EDITADO:

Ten en cuenta que a partir de 2017 'on_sent_ok' está obsoleto. Esto significa que tu código dejará de funcionar en algún momento en el futuro (probablemente a finales de 2017). La solución recomendada es usar directamente escuchadores de eventos DOM. Por ejemplo, si usaste:

on_sent_ok: "ga( 'send', 'event', 'Contact Form', 'submit' );"

Deberías reemplazarlo con:

document.addEventListener( 'wpcf7mailsent', function( event ) {
    ga( 'send', 'event', 'Contact Form', 'submit' );
}, false );

El código JavaScript puede colocarse, por ejemplo, en el pie de página.

RESPUESTA ORIGINAL:

Ok, lo resolví. En la configuración específica del formulario, ve a la pestaña de campos adicionales. Escribe lo siguiente: on_sent_ok: "location.replace('http://www.website-redirect.com');"

Funciona perfectamente para mí ahora. Espero que esto ayude a otros desarrolladores en el futuro también.

Pestaña de campos adicionales en Contact Form 7

Sé que la imagen está en holandés... pero no puedes pasarla por alto con las grandes líneas rojas alrededor del nombre de la pestaña.

30 jul 2015 17:07:04
Comentarios

¿cómo guardamos una cookie usando la pestaña Adicional? Intenté esto on_submit: "ooid = document.getElementById('customer_orderid').value;document.cookie = 'myorderiiid='+ooid+'; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/';"; pero no se guarda la cookie... ¿POR QUÉ?

Mostafa Mostafa
13 abr 2017 09:29:53

Por favor, ten en cuenta que esta fue una pregunta de HACE DOS AÑOS...

Menno van der Krift Menno van der Krift
30 oct 2017 12:12:33

Lo siento, no tenía suficiente reputación para agregarlo como comentario en ese momento, así que la única manera de incluir esta información fue mediante la edición.

Amade Amade
23 feb 2018 13:15:40
0

Usar on_sent_ok como se explica en contactform7.com/additional-settings puede ser muy útil para agregar JavaScript simple como redireccionar a otra página.

Sin embargo, es bastante propenso a fallar debido a conflictos de JavaScript con tu tema actual de WordPress o con alguno de los otros plugins que estés utilizando.

on_sent_ok es lo último que se ejecuta en Contact Form 7, por lo que cualquier conflicto de JavaScript puede evitar que esto se complete.

Como alternativa, Contact Form 7 tiene una gran cantidad de hooks que se enumeran en http://hookr.io/plugins/contact-form-7/. Estos pueden proporcionar una solución más específica y robusta.

1 ago 2015 08:42:36