Introdução
Gostaria de manter o nome do ficheiro original nos ficheiros dentro das notificações de e-mail quando activou a opção Ativar anexos de upload de ficheiros a partir das opções avançadas no separador Notificações? Por padrão, o WPForms adicionará uma sequência de letras e números ao nome original do arquivo por motivos de segurança e no caso de nomes de arquivos duplicados. No entanto, se você quiser remover essa camada de segurança, pode conseguir isso facilmente com um filtro PHP. Neste tutorial, vamos mostrar-lhe exatamente como o fazer!
Este snippet só pode ser utilizado na versão 6.2 do WordPress.
Criar o formulário
Vamos começar por criar um novo formulário. Para efeitos desta documentação, vamos criar uma folha de inscrição simples para uma equipa de basebol recreativa encomendar as camisolas da sua própria equipa. Teremos algumas informações básicas, mas também adicionaremos um campo de carregamento de ficheiros para permitir que as equipas carreguem o seu próprio design.
Se precisar de ajuda para criar o seu formulário, consulte este guia útil.
Ativar a opção de incluir o ficheiro anexo
Assim que os campos do formulário forem adicionados, clique no separador Definições dentro do criador de formulários. Em seguida, vá para o separador Notificações e desloque-se para baixo para abrir as Opções avançadas.
Clique para ativar o botão para Ativar anexos de carregamento de ficheiros e selecione os campos para os quais pretende incluir os anexos. Neste tutorial, só temos um campo de carregamento de ficheiros, por isso só precisamos de adicionar esse campo a esta secção.
Adicionar o snippet
Em seguida, vamos adicionar 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.
Tenha em atenção que, ao adicionar este snippet, ele será o mesmo para todos os formulários e carregamentos de ficheiros.
/** * 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 snippet procurará quaisquer anexos ao e-mail e, em vez de adicionar a cadeia de caracteres com hash, manterá o nome do ficheiro original que foi carregado.
Agora, em vez de o nosso ficheiro de anexo de e-mail ter um nome de ficheiro como theres-no-base-like-home-svg-8abdd7ea434445587fb0e1b560b137b1.png, o nome após o snippet ter sido adicionado será theres-no-base-like-home-svg.png.
O nome do ficheiro é hashed para evitar que se descubram manualmente os URLs corretos para descarregar esses ficheiros do servidor, bem como para proteger os ficheiros de nomes de ficheiros duplicados. Usar este snippet irá negar estas medidas de segurança que o WPForms coloca em prática.
E pronto! Utilizou com sucesso um filtro PHP para manter o nome original do ficheiro para anexos de ficheiros nas suas notificações por correio eletrónico. Também gostaria de alterar o tempo que os seus visitantes têm para carregar ficheiros maiores? Dê uma vista de olhos ao nosso artigo sobre Como alterar o tempo limite no Modern File Upload.