Introducción
¿Le gustaría conservar el nombre original del archivo en los archivos dentro de las notificaciones por correo electrónico cuando ha activado la opción Habilitar archivos adjuntos de carga de las opciones avanzadas en la pestaña Notificaciones? Por defecto, WPForms agregará una cadena de letras y números al nombre original del archivo por razones de seguridad y en caso de nombres de archivos duplicados. Sin embargo, si desea eliminar esta capa de seguridad, puede lograrlo fácilmente con un filtro PHP. En este tutorial, le mostraremos exactamente cómo lograrlo.
Este fragmento sólo puede utilizarse en la versión 6.2 de WordPress.
Creación del formulario
Comenzaremos creando un nuevo formulario. Para el propósito de esta documentación, estamos haciendo una simple hoja de inscripción para un equipo de béisbol de recreación para ordenar sus propias camisetas del equipo. Tendremos alguna información básica, pero también añadiremos un campo de carga de archivos para permitir a los equipos cargar su propio diseño.
Si necesita ayuda para crear su formulario, consulte esta útil guía.
Activar la opción de incluir el archivo adjunto
Una vez añadidos los campos del formulario, haz clic en la pestaña Configuración dentro del generador de formularios. A continuación, dirígete a la pestaña Notificaciones y desplázate hacia abajo para abrir las opciones Avanzadas.
Haga clic en el botón Habilitar archivos adjuntos y seleccione los campos en los que desea incluir los archivos adjuntos. En este tutorial, sólo tenemos un campo de carga de archivos, por lo que sólo tendremos que añadir ese campo a esta sección.
Añadir el fragmento
A continuación, vamos a añadir el fragmento a nuestro sitio. Si necesitas ayuda sobre cómo añadir fragmentos a tu propio sitio, consulta este tutorial para obtener más información.
Tenga en cuenta que al añadir este fragmento, será el mismo para todos los formularios y cargas de archivos.
/** * Retain original file name on file uploads * * @link https://wpforms.com/developers/how-to-retain-the-original-file-name-for-file-uploads/ */ function wpf_emails_send_email_data( $email, $email_obj ) { if ( empty( $email[ 'attachments' ] ) ) { return $email; } if ( ! isset( $email_obj->form_data, $email_obj->notification_id, $email_obj->fields ) ) { return $email; } $form_data = $email_obj->form_data; $notification_id = $email_obj->notification_id; $entry_fields = $email_obj->fields; if ( empty( $entry_fields ) || empty( $form_data[ 'settings' ][ 'notifications' ][ $notification_id ][ 'file_upload_attachment_enable' ] ) || empty( $form_data[ 'settings' ][ 'notifications' ][ $notification_id ][ 'file_upload_attachment_fields' ] ) ) { return $email; } $attachment_fields = $form_data[ 'settings' ][ 'notifications' ][ $notification_id ]['file_upload_attachment_fields']; $entry_attachment_fields = []; foreach ( $attachment_fields as $field_id ) { if ( ! empty( $entry_fields[ $field_id ] ) ) { $entry_field = $entry_fields[ $field_id ]; if ( ! empty( $entry_field[ 'style' ] ) && $entry_field[ 'style' ] === 'modern' ) { foreach ( $entry_field[ 'value_raw' ] as $file ) { $entry_attachment_fields[ $file[ 'file' ] ] = $file; } } else { $entry_attachment_fields[ $entry_field['file'] ] = $entry_field; } } } $attachments = []; foreach ( $email[ 'attachments' ] as $attachment ) { $file_name = basename( $attachment ); if ( empty( $entry_attachment_fields[ $file_name ][ 'file_user_name' ] ) ) { $attachments[] = $attachment; continue; } $attachments[ $entry_attachment_fields[ $file_name ][ 'file_user_name' ] ] = $attachment; } $email[ 'attachments' ] = $attachments; return $email; } add_filter( 'wpforms_emails_send_email_data', 'wpf_emails_send_email_data', 30, 2 );
Este fragmento buscará cualquier archivo adjunto al correo electrónico y, en lugar de añadir la cadena con hash, conservará el nombre original del archivo que se cargó.
Ahora, en lugar de que nuestro archivo adjunto de correo electrónico tenga un nombre como theres-no-base-like-home-svg-8abdd7ea434445587fb0e1b560b137b1 .png, el nombre después de añadir el fragmento será theres-no-base-like-home-svg.png.
El nombre del archivo se hash para evitar manualmente averiguar las direcciones URL correctas para descargar los archivos desde el servidor, así como proteger los archivos de nombres de archivo duplicados. El uso de este fragmento anulará estas medidas de seguridad que WPForms pone en marcha.
Y ¡listo! Ha utilizado con éxito un filtro PHP para conservar el nombre original de los archivos adjuntos en sus notificaciones por correo electrónico. ¿Le gustaría también modificar el tiempo que tienen sus visitantes para subir archivos más grandes? Eche un vistazo a nuestro artículo sobre Cómo cambiar el tiempo de espera en la subida de archivos moderna.