Introduction
Souhaitez-vous conserver le nom original des fichiers dans les emails de notification lorsque vous avez activé l'option Enable File Upload Attachments dans les options avancées de l'onglet Notifications? Par défaut, WPForms ajoutera une chaîne de lettres et de chiffres au nom du fichier original pour des raisons de sécurité et dans le cas de noms de fichiers dupliqués. Cependant, si vous souhaitez supprimer cette couche de sécurité, vous pouvez facilement le faire avec un filtre PHP. Dans ce tutoriel, nous vous montrerons exactement comment y parvenir !
Ce snippet ne peut être utilisé que sur la version 6.2 de WordPress.
Création du formulaire
Nous commencerons par créer un nouveau formulaire. Dans le cadre de cette documentation, nous allons créer une simple feuille d'inscription pour une équipe de baseball récréative afin qu'elle puisse commander ses propres maillots. Nous disposerons de quelques informations de base, mais nous ajouterons également un champ de téléchargement de fichier pour permettre aux équipes de télécharger leur propre dessin.
Si vous avez besoin d'aide pour créer votre formulaire, consultez ce guide utile.
Activation de l'option d'inclusion de la pièce jointe
Une fois les champs du formulaire ajoutés, cliquez sur l'onglet Paramètres dans le générateur de formulaires. Allez ensuite dans l'onglet Notifications et faites défiler vers le bas pour ouvrir les options avancées.
Cliquez pour activer le bouton Enable File Upload Attachments et sélectionnez les champs pour lesquels vous souhaitez inclure les pièces jointes. Dans ce tutoriel, nous n'avons qu'un seul champ de téléchargement de fichiers, il nous suffira donc d'ajouter ce champ à cette section.
Ajout du snippet
Ensuite, nous allons ajouter l'extrait à notre site. Si vous avez besoin d'aide pour ajouter des snippets à votre propre site, consultez ce tutoriel pour plus d'informations.
Veuillez noter qu'en ajoutant ce snippet, il sera le même pour tous les formulaires et les téléchargements de fichiers.
/** * 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 );
Cet extrait recherchera les pièces jointes à l'e-mail et, au lieu d'ajouter la chaîne hachée, il conservera le nom du fichier original qui a été téléchargé.
Désormais, au lieu que le fichier joint à notre courrier électronique porte un nom tel que theres-no-base-like-home-svg-8abdd7ea434445587fb0e1b560b137b1.png, le nom après l'ajout de l'extrait sera theres-no-base-like-home-svg.png.
Le nom du fichier est haché afin d'éviter de trouver manuellement les bonnes URL pour télécharger ces fichiers depuis le serveur, ainsi que pour protéger les fichiers contre les noms de fichiers dupliqués. L'utilisation de ce snippet annulera les mesures de sécurité mises en place par WPForms.
Et le tour est joué ! Vous avez réussi à utiliser un filtre PHP pour conserver le nom d'origine des pièces jointes dans vos notifications par courrier électronique. Vous souhaitez également modifier le délai dont disposent vos visiteurs pour télécharger des fichiers plus volumineux ? Jetez un coup d'œil à notre article sur la façon de modifier le délai d'attente pour le téléchargement moderne de fichiers.