Atenção!

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

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

Ignorar

Como Reter o Nome Original do Ficheiro para Uploads de Ficheiros

Introdução

Pretende manter o nome original do ficheiro nos ficheiros dentro das notificações por e-mail quando ativou a opção Ativar Anexos de Upload de Ficheiro nas opções Avançadas no separador Notificações? Por defeito, o WPForms adicionará uma cadeia de letras e números ao nome original do ficheiro para fins de segurança e em caso de nomes de ficheiro duplicados. No entanto, se pretender remover esta camada de segurança, pode facilmente consegui-lo com um filtro PHP. Neste tutorial, mostraremos exatamente como o fazer!

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

Criação do formulário

Começaremos por criar um novo formulário. Para efeitos desta documentação, estamos a fazer uma folha de inscrição simples para uma equipa de baseball recreativa para encomendar as suas próprias camisolas de equipa. Teremos algumas informações básicas, mas também adicionaremos um campo Upload de Ficheiro para permitir que as equipas façam o upload do seu próprio design.

comece por criar o seu formulário e adicionar os seus campos.

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

Ativar a opção para incluir o anexo de ficheiro

Depois de adicionar os campos do formulário, clique no separador Definições dentro do construtor de formulários. Em seguida, vá para o separador Notificações e percorra para baixo para abrir as opções Avançadas.

Clique para ativar o botão Ativar Anexos de Upload de Ficheiro e selecione os campos para os quais pretende incluir os anexos. Neste tutorial, temos apenas um campo Upload de Ficheiro, pelo que só precisaremos de adicionar esse campo a esta secção.

a partir do separador Notificações, abra Avançadas e clique no botão para Ativar Anexos de Upload

Adição do trecho de código

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

Tenha em atenção que, ao adicionar este trecho, será o mesmo para todos os formulários e uploads 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 trecho procurará quaisquer anexos ao e-mail e, em vez de adicionar a cadeia codificada, reterá o nome original do ficheiro que foi carregado.

Agora, em vez de o nosso ficheiro anexo de e-mail ter um nome de ficheiro 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 ter sido adicionado, o nome do ficheiro em anexo será o nome original do ficheiro.

O nome do ficheiro é codificado para evitar a descoberta manual dos URLs corretos para descarregar esses ficheiros do servidor, bem como para proteger os ficheiros de nomes duplicados. A utilização deste trecho anulará estas medidas de segurança que o WPForms implementa.

E é tudo! Utilizou com sucesso um filtro PHP para reter o nome original do ficheiro para anexos de ficheiro nas suas notificações por e-mail. Gostaria também de alterar o tempo que os seus visitantes têm para fazer upload de ficheiros maiores? Dê uma vista de olhos ao nosso artigo sobre Como Alterar o Tempo Limite no Upload Moderno de Ficheiros.