Subida de archivos y adjuntos

En esta entrada explicaré la característica de subida de archivos y adjuntos de Contact Form 7. Con esta característica, puedes permitir que tus usuarios suban sus archivos a través de tu formulario y luego se te envíe un correo electrónico con los archivos adjuntos.

Para configurarla, se necesitan dos pasos: 1) Añadir campos de subida de archivos en tu formulario, 2) Configurar tus ajustes de correo para adjuntar los archivos subidos. Estos dos pasos se explicarán a continuación.

Añadir campos de subida de archivos en tu formulario

Al igual que para otros tipos de campos de formulario, Contact Form 7 proporciona etiquetas de formulario para campos de subida de archivos (<input type="file"> en HTML): file y file*. La etiqueta con el asterisco file*, determina que es un campo obligatorio y requiere que el usuario suba un archivo.

OpciónEjemplosDescripción
id:(id)id:fooValor del atributo id de la etiqueta input.
class:(clase)class:barValor del atributo class de la etiqueta input. Para establecer dos o más clases, puedes usar varias opciones class:. Ejemplo: [file tu-archivo class:y2008 class:m01 class:d01].
filetypes:(tipos de archivo)filetypes:image/*|txt|application/pdfTipos de archivos aceptables. Enumera las extensiones de archivo después de filetypes:. Cuando tengas varios tipos de archivos para configurar, utiliza el carácter «|» (barra vertical o pleca) como separador. Puedes utilizar extensiones de archivo y tipos MIME para declarar tipos de archivos.
limit:(num)limit:1048576
limit:1024kb
limit:1mb
Limita el tamaño máximo de archivo aceptable. Puedes utilizar el sufijo kb (kilobyte) o mb (megabyte) opcionalmente. Si omites el sufijo, el número significará bytes. Ten en cuenta que no puedes usar un punto decimal en él (por ejemplo: [file tu-archivo limit:1.5mb]) ya que será ignorado si existe.
capture:(valor)capture:user
capture:environment
Esta opción especifica el valor del atributo HTML de capture.

Ejemplo:

[file tu-archivo filetypes:pdf|txt limit:2mb]

Contact Form 7 aplica restricciones predeterminadas para los tipos de archivos aceptables y el tamaño de archivo cuando has omitido establecer las opciones filetypes: y limit:. Los tipos de archivo predeterminados son audio/*|video/*|image/*, y el límite de subida predeterminado es 1mb. Dado que estos valores predeterminados pueden cambiar en versiones futuras sin previo aviso, recomendamos configurar las opciones explícitamente.

Configurando los archivos adjuntos en un correo electrónico

Para adjuntar los archivos subidos al correo electrónico, coloca las etiquetas de correo correspondientes a las etiquetas de formulario de los campos de subida de archivos en el campo Archivos adjuntos en el panel de la pestaña Correo electrónico como se muestra a continuación:

Captura de pantalla del campo archivo adjunto
Captura de pantalla del campo Archivos adjuntos

En este ejemplo, la etiqueta de formulario del campo de subida de archivos es:

[file tu-archivo filetypes:pdf]

Por lo tanto, la etiqueta de correo correspondiente a esta es:

[tu-archivo]

Ten en cuenta que lo que pones en el campo Archivos adjuntos es [tu-archivo] (la etiqueta de correo), no [file tu-archivo filetypes:pdf] (esta no es una etiqueta de correo sino una etiqueta de formulario).

Si has subido varios archivos y quieres adjuntarlos a un correo electrónico, simplemente alinea las etiquetas de correo en el campo Archivos adjuntos de esta manera:

[tu-archivo][tu-otro-archivo]

Archivos adjuntos locales

Contact Form 7 es compatible con archivos adjuntos locales. Puedes colocar rutas de archivos locales en el campo Archivos adjuntos y esos archivos se adjuntarán al correo electrónico, al igual que los archivos subidos.

Pon una ruta de archivo por línea. Cuando la ruta no sea una ruta absoluta, se tratará como una ruta relativa al directorio wp-content.

Por razones de seguridad, no se permite especificar archivos fuera del directorio wp-content para archivos adjuntos de correo electrónico, de modo que tienes que colocar los archivos en wp-content o un subdirectorio de este.

Ejemplo:

[tu-archivo][tu-otro-archivo]
uploads/2020/22/08/manualdeuso.pdf

Cómo se gestionan tus archivos subidos

Después de que un usuario sube un archivo a través de tu formulario de contacto, Contact Form 7 comprueba si: 1.) Se han producido errores de PHP; 2.) el tipo y el tamaño del archivo son válidos; y luego, si la comprobación es correcta, Contact Form 7 mueve el archivo subido a una carpeta temporal. En este punto, Contact Form 7 adjunta el archivo al correo y lo envía. Después de estos procedimientos, Contact Form 7 elimina el archivo de la carpeta temporal.

La ubicación de la carpeta temporal por defecto es wp-content/uploads/wpcf7_uploads. Puede ser diferente si has cambiado el ajuste de la ruta de subida wp-content/uploads.

Esta carpeta se crea automáticamente, pero a veces puede fallar. La razón más probable de esto es que la carpeta principal no tenga suficientes permisos de escritura. En tales casos, puedes cambiar los permisos o crear una carpeta manualmente.

También puedes cambiar la ruta de la carpeta temporal, estableciendo la constante WPCF7_UPLOADS_TMP_DIR en tu archivo wp-config.php de este modo:

define( 'WPCF7_UPLOADS_TMP_DIR', '/tu/ruta/de/archivos' );

Si la constante WPCF7_UPLOADS_TMP_DIR está definida, este directorio se usará como la carpeta temporal en su lugar.

Asegúrate de que tu carpeta temporal para los archivos subida exista y tenga permisos de escritura. De lo contrario, la subida de todos los archivos fallará.

Just another contact form plugin for WordPress. Simple but flexible.