Introduzione
Volete mantenere il nome originale dei file all'interno delle notifiche via e-mail quando avete abilitato l'opzione Abilita il caricamento di file allegati nelle opzioni avanzate della scheda Notifiche? Per impostazione predefinita, WPForms aggiunge una stringa di lettere e numeri al nome originale del file per motivi di sicurezza e in caso di nomi di file duplicati. Tuttavia, se si desidera rimuovere questo livello di sicurezza, è possibile farlo facilmente con un filtro PHP. In questo tutorial vi mostreremo esattamente come fare!
Questo snippet può essere utilizzato solo con la versione 6.2 di WordPress.
Creazione del modulo
Inizieremo creando un nuovo modulo. Per lo scopo di questa documentazione, faremo un semplice foglio di iscrizione per una squadra di baseball ricreativa per ordinare le magliette della propria squadra. Avremo alcune informazioni di base, ma aggiungeremo anche un campo di caricamento file per consentire alle squadre di caricare il proprio disegno.
Se avete bisogno di aiuto per creare il vostro modulo, consultate questa utile guida.
Abilitazione dell'opzione di inclusione del file allegato
Una volta aggiunti i campi del modulo, fare clic sulla scheda Impostazioni all'interno del costruttore di moduli. Quindi, selezionare la scheda Notifiche e scorrere verso il basso per aprire le opzioni avanzate.
Fare clic per attivare il pulsante Abilita allegati di caricamento file e selezionare i campi per i quali si desidera includere gli allegati. In questa esercitazione, abbiamo solo un campo per il caricamento dei file, quindi dovremo aggiungere solo quel campo a questa sezione.
Aggiunta dello snippet
Successivamente, aggiungeremo lo snippet al nostro sito. Se avete bisogno di assistenza per aggiungere gli snippet al vostro sito, consultate questo tutorial per ulteriori informazioni.
Si noti che l'aggiunta di questo snippet sarà uguale per tutti i moduli e i caricamenti di file.
/** * 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 );
Questo snippet cercherà eventuali allegati all'e-mail e, invece di aggiungere la stringa con hash, manterrà il nome originale del file caricato.
Ora, invece di avere un nome come theres-no-base-like-home-svg-8abdd7ea434445587fb0e1b560b137b1.png, dopo l'aggiunta dello snippet il nome sarà theres-no-base-like-home-svg.png.
Il nome del file viene sottoposto a hash per evitare che si scoprano manualmente gli URL corretti per scaricare i file dal server e per proteggere i file da nomi duplicati. L'uso di questo snippet annullerà le misure di sicurezza adottate da WPForms.
Ed ecco fatto! Avete utilizzato con successo un filtro PHP per mantenere il nome originale dei file allegati alle vostre notifiche e-mail. Volete anche modificare il tempo a disposizione dei visitatori per caricare file più grandi? Date un'occhiata al nostro articolo su Come modificare il timeout del caricamento moderno dei file.