Atenção!

Este artigo contém código PHP e destina-se a desenvolvedores. Oferecemos este código como uma cortesia, mas não fornecemos suporte para personalizações de código ou desenvolvimento de terceiros.

Para orientação extra, consulte o tutorial do WPBeginner sobre como adicionar código personalizado.

Dispensar

Como Manter o Nome Original do Arquivo para Uploads

Introdução

Você gostaria de manter o nome original do arquivo nos arquivos dentro das notificações por e-mail quando você habilitou a opção Habilitar anexos de upload de arquivo nas opções Avançadas na aba Notificações? Por padrão, o WPForms adicionará uma sequência de letras e números ao nome original do arquivo para fins de segurança e em caso de nomes de arquivo duplicados. No entanto, se você quiser remover essa camada de segurança, você pode facilmente conseguir isso com um filtro PHP. Neste tutorial, mostraremos exatamente como fazer isso!

Este trecho só pode ser usado na versão 6.2 do WordPress.

Criando o formulário

Começaremos criando um novo formulário. Para fins desta documentação, estamos fazendo uma planilha de inscrição simples para uma equipe de beisebol recreativa para que eles possam pedir suas próprias camisas de time. Teremos algumas informações básicas, mas também adicionaremos um campo de Upload de Arquivo para permitir que as equipes enviem seu próprio design.

comece criando seu formulário e adicionando seus campos.

Se precisar de ajuda para criar seu formulário, consulte este guia útil.

Habilitando a opção para incluir o anexo de arquivo

Depois que os campos do formulário forem adicionados, clique na aba Configurações dentro do construtor de formulários. Em seguida, vá para a aba Notificações e role para baixo para abrir as opções Avançadas.

Clique para ativar o botão Habilitar anexos de upload de arquivo e selecione os campos para os quais você deseja incluir os anexos. Neste tutorial, temos apenas um campo de Upload de Arquivo, então precisaremos apenas adicionar esse campo a esta seção.

Na guia Notificações, abra Avançado e clique no botão para Habilitar Anexos de Upload

Adicionando o snippet

Em seguida, vamos adicionar o trecho ao nosso site. Se precisar de alguma ajuda sobre como adicionar trechos ao seu próprio site, confira este tutorial para mais informações.

Por favor, note que ao adicionar este trecho, 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 );

Este trecho procurará por quaisquer anexos no e-mail e, em vez de adicionar a string com hash, ele manterá o nome original do arquivo 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 trecho será theres-no-base-like-home-svg.png.

após o trecho ser adicionado, o nome do arquivo anexado será o nome original do arquivo.

O nome do arquivo é transformado em hash para evitar a descoberta manual dos URLs corretos para baixar esses arquivos do servidor, bem como para proteger os arquivos contra nomes de arquivo duplicados. Usar este trecho anulará essas medidas de segurança que o WPForms implementa.

E é isso! Você usou com sucesso um filtro PHP para manter o nome original do arquivo para anexos de arquivo 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 Upload de Arquivo Moderno.