Introdução
Gostaria de manter o nome do arquivo original nos arquivos dentro das notificações por e-mail quando tiver ativado a opção Enable File Upload Attachments (Ativar anexos de upload de arquivos) nas opções avançadas da guia Notifications (Notificações )? Por padrão, o WPForms adicionará uma sequência de letras e números ao nome do arquivo original para fins de segurança e no caso de nomes de arquivos duplicados. No entanto, se você quiser remover essa camada de segurança, poderá fazer isso facilmente com um filtro PHP. Neste tutorial, mostraremos exatamente como fazer isso!
Esse snippet só pode ser usado na versão 6.2 do WordPress.
Criando o formulário
Começaremos criando um novo formulário. Para os fins desta documentação, estamos criando uma folha de inscrição simples para um time de beisebol recreativo encomendar suas próprias camisas. Teremos algumas informações básicas, mas também adicionaremos um campo File Upload para permitir que as equipes carreguem seu próprio design.
Se precisar de ajuda para criar seu formulário, consulte este guia útil.
Ativação da opção para incluir o anexo do arquivo
Depois que os campos do formulário forem adicionados, clique na guia Settings (Configurações ) dentro do construtor de formulários. Em seguida, vá até a guia Notifications (Notificações ) e role para baixo para abrir as opções Advanced (Avançadas ).
Clique para ativar o botão Enable File Upload Attachments (Ativar anexos de upload de arquivos ) e selecione os campos para os quais você deseja incluir os anexos. Neste tutorial, temos apenas um campo File Upload, portanto, só precisaremos adicionar esse campo a esta seção.
Adicionando o snippet
Em seguida, adicionaremos o snippet ao nosso site. Se precisar de ajuda sobre como adicionar snippets ao seu próprio site, consulte este tutorial para obter mais informações.
Observe que, ao adicionar esse snippet, ele será o mesmo para todos os formulários e uploads de arquivos.
/** * 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 );
Esse snippet procurará qualquer anexo no e-mail e, em vez de adicionar a cadeia de caracteres com hash, manterá o nome do arquivo original que foi carregado.
Agora, em vez de nosso arquivo de anexo de e-mail ter um nome de arquivo como theres-no-base-like-home-svg-8abdd7ea434445587fb0e1b560b137b1.png, o nome após a adição do snippet será theres-no-base-like-home-svg.png.
O nome do arquivo é criptografado para evitar que se descubra manualmente os URLs corretos para baixar esses arquivos do servidor, bem como para proteger os arquivos de nomes de arquivos duplicados. O uso desse snippet anulará essas medidas de segurança implementadas pelo WPForms.
E é isso! Você usou com sucesso um filtro PHP para manter o nome do arquivo original para anexos de arquivos em suas notificações por e-mail. Você também gostaria de alterar o tempo que seus visitantes têm para fazer upload de arquivos maiores? Dê uma olhada em nosso artigo sobre Como alterar o tempo limite no Modern File Upload.