¿Cómo ejecutar un script del lado del servidor cuando se envía Contact Form 7?
Soy nuevo en WordPress y estoy tratando de crear un formulario simple. Actualmente estoy usando Contact Form 7 y hasta ahora me parece bien. Pero ahora, estoy tratando de ejecutar un código del lado del servidor cuando se envía el formulario. Básicamente, lo que quiero es obtener las variables POST del formulario cuando se envía para poder usar los datos del formulario en el script. Aún quiero mantener la funcionalidad de correo electrónico que envía al correo cuando se envía el formulario.
¿Hay una manera simple y más eficiente de hacerlo sin necesidad de cambiar nada en el código?

Necesitas el hook wpcf7_before_send_mail
que se activa después de enviar el correo electrónico exitosamente.
Simplemente agrega esto en tu archivo functions.php
.
add_action( 'wpcf7_before_send_mail', 'process_contact_form_data' );
function process_contact_form_data( $contact_data ){
var_dump($contact_data->posted_data);
$name = $contact_data->posted_data["your-name"];
$email = $contact_data->posted_data["your-email"];
echo $name ;
echo $email;
}
Puedes acceder a los campos por su nombre en el array $contact_data->posted_data
.
Sí. Puedes redirigir a otra página ya sea con JavaScript o desde la función anterior. Con JavaScript necesitas agregar la siguiente línea en la sección de Configuraciones Adicionales del formulario de contacto que has creado.
on_sent_ok: "location = 'http://tudominio.com/gracias.php';"
Pero esto no te permitirá usar los valores enviados desde el formulario. Así que usa el método alternativo.
Redirige a la página de gracias desde la función mencionada anteriormente. Pero antes de redirigir, guarda la información que quieres mostrar en la página de gracias en variables de SESIÓN (como nombre, correo, asunto del formulario). Luego en la página de gracias, obtén esos valores y muéstralos. Después puedes destruir las variables de sesión y verificar cada vez si esas variables están definidas. Esto te dará control sobre acceder directamente a la URL de gracias desde el navegador y mostrar un mensaje apropiado diciendo que la página no es accesible directamente.

Gracias por tu respuesta @Phobos. ¿Es posible que cuando el formulario haya sido enviado pueda redirigir a algo como una página de agradecimiento donde podría usar las variables post del formulario que acaba de enviarse desde Contact Form 7?

esto no funciona. aparte de no redirigir, el usuario no recibe retroalimentación del envío del formulario (a pesar de que el correo se envía) y se queda con una animación de carga infinita. Por cierto, los autores desaconsejan oficialmente usar el hook on_sent_ok
(que en realidad funciona) y proporcionan una solución que desafortunadamente no funciona

Como ha pasado mucho tiempo, el autor puede haber cambiado la API y los hooks.

YA NO FUNCIONA, los datos ahora deben procesarse usando $submission = WPCF7_Submission::get_instance();
y $posted_data = $submission->get_posted_data();
como se indica en esta respuesta
