Los artículos de la categoría Manual del desarrollador abordan temas que requieren conocimiento técnico. Ten cuidado y utiliza las técnicas descritas a continuación bajo tu propia responsabilidad. Si no tienes experiencia en desarrollo, y necesitas ayuda, te recomendamos solicitar el apoyo de un profesional.
This page is also available in English.
Para acceder a los datos de entrada del usuario enviados a través de un formulario de contacto, puedes consultar la variable global nativa de PHP $_POST
. Además de esta, la clase WPCF7_Submission
de Contact Form 7 proporciona una fuente de datos diferente ($posted_data
) que se puede utilizar para acceder a los datos de entrada del usuario. ¿Cuáles son las diferencias entre $_POST
y $posted_data
? ¿Y cuál deberías usar para tu propósito?
$_POST
incluye los datos sin procesar que el usuario ha enviado. $posted_data
incluye los datos saneados y procesados para su uso por parte de Contact Form 7.
Si bien $_POST
incluye todos los datos enviados, algunos de los que representan la metainformación del envío (como el ID del formulario de contacto) y otros que son irrelevantes para las intenciones del remitente (como la respuesta al CAPTCHA) se excluyen de $posted_data
.
El siguiente fragmento de código muestra un ejemplo que recupera los datos de entrada del usuario desde $posted_data
.
add_action( 'wpcf7_before_send_mail',
function( $contact_form, $abort, $submission ) {
// Obteniendo información del usuario a través del campo «your-email»
$tu_email = $submission->get_posted_data( 'tu-email' );
// Obteniendo información del usuario a través del campo «your-message»
$tu_mensaje = $submission->get_posted_data( 'tu-mensaje' );
// Haz algunas cosas productivas aquí
},
10, 3
);
Como puede ver en este ejemplo, usas el método get_posted_data()
para acceder a los datos. No tienes permiso para acceder directamente a la propiedad $posted_data
.
El valor que devuelve get_posted_data()
es una cadena o una array de valores de cadena. Es recomendado tratar el valor devuelto siempre asumiendo ambos casos, como en el siguiente ejemplo:
$tu_email = $submission->get_posted_data( 'tu-email' );
// Analiza el array y une los elementos con una coma.
$tu_email = implode( ', ', (array) $tu_email );
No uses $posted_data para la validación o el filtrado de mensajes no deseados.
No uses $posted_data
para la validación de los datos de entrada o el filtrado de mensajes no deseados. Usa $_POST
en su lugar, porque esas tareas tienen sentido solo cuando se realizan contra los datos de entrada del usuario sin procesar.