Accediendo a los datos introducidos por el usuario

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.

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.