Accediendo a los datos introducidos por el usuario

Posts in the developer's cookbook category describe topics that require technical knowledge. Be warned and use the techniques at your own risk. Unless you are an experienced developer, you are strongly advised to ask a professional for support.

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.