Beibehaltung des ursprünglichen Dateinamens bei Dateiuploads

Einführung

Möchten Sie den ursprünglichen Dateinamen auf Dateien innerhalb der E-Mail-Benachrichtigungen beibehalten, wenn Sie die Option Enable File Upload Attachments aus den erweiterten Optionen auf der Registerkarte Benachrichtigungen aktiviert haben? Standardmäßig wird WPForms eine Zeichenfolge von Buchstaben und Zahlen, um den ursprünglichen Dateinamen zu Sicherheitszwecken und im Falle von doppelten Dateinamen hinzufügen. Wenn Sie diese Sicherheitsebene jedoch entfernen möchten, können Sie dies ganz einfach mit einem PHP-Filter erreichen. In diesem Tutorial zeigen wir Ihnen genau, wie Sie das erreichen!

Dieses Snippet kann nur unter WordPress Version 6.2 verwendet werden.

Erstellen des Formulars

Wir beginnen mit der Erstellung eines neuen Formulars. Im Rahmen dieser Dokumentation erstellen wir ein einfaches Anmeldeformular für ein Freizeit-Baseballteam, das seine eigenen Trikots bestellen möchte. Wir werden einige grundlegende Informationen angeben, aber auch ein Feld zum Hochladen von Dateien hinzufügen, damit die Teams ihr eigenes Design hochladen können.

beginnen Sie mit der Erstellung Ihres Formulars und fügen Sie Ihre Felder hinzu.

Wenn Sie Hilfe bei der Erstellung Ihres Formulars benötigen, sehen Sie sich bitte diese hilfreiche Anleitung an.

Aktivieren der Option zur Einbeziehung des Dateianhangs

Sobald die Formularfelder hinzugefügt sind, klicken Sie auf die Registerkarte Einstellungen im Formularersteller. Gehen Sie dann zur Registerkarte " Benachrichtigungen" und scrollen Sie nach unten, um die erweiterten Optionen zu öffnen.

Klicken Sie auf die Schaltfläche zum Aktivieren von Datei-Upload-Anhängen und wählen Sie die Felder aus, für die Sie Anhänge hinzufügen möchten. In diesem Tutorial haben wir nur ein Feld für den Datei-Upload, also müssen wir nur dieses Feld zu diesem Abschnitt hinzufügen.

Öffnen Sie auf der Registerkarte "Benachrichtigungen" die Option "Erweitert" und klicken Sie auf die Schaltfläche "Anhänge hochladen".

Hinzufügen des Snippets

Als Nächstes werden wir das Snippet zu unserer Website hinzufügen. Wenn Sie Hilfe beim Hinzufügen von Snippets zu Ihrer eigenen Website benötigen, finden Sie in diesem Tutorial weitere Informationen.

Bitte beachten Sie, dass das Hinzufügen dieses Snippets für alle Formulare und Datei-Uploads gleich ist.

/**
 * 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 );

Dieses Snippet sucht nach Anhängen an die E-Mail, und anstatt die gehashte Zeichenfolge hinzuzufügen, wird der ursprüngliche Dateiname, der hochgeladen wurde, beibehalten.

Statt eines Dateinamens wie theres-no-base-like-home-svg-8abdd7ea434445587fb0e1b560b137b1.png wird der Name nach dem Hinzufügen des Snippets nun theres-no-base-like-home-svg.png lauten.

nachdem das Snippet hinzugefügt wurde, ist der angehängte Dateiname der ursprüngliche Dateiname.

Der Dateiname wird gehasht, um zu verhindern, dass manuell herauszufinden, die richtigen URLs zum Herunterladen dieser Dateien vom Server sowie zum Schutz der Dateien vor doppelten Dateinamen. Mit diesem Snippet wird negieren diese Sicherheitsmaßnahmen WPForms setzt in Ort.

Und das war's! Sie haben erfolgreich einen PHP-Filter eingesetzt, um den ursprünglichen Dateinamen für Dateianhänge in Ihren E-Mail-Benachrichtigungen beizubehalten. Möchten Sie auch die Zeit ändern, die Ihre Besucher zum Hochladen größerer Dateien haben? Schauen Sie sich unseren Artikel über die Änderung des Zeitlimits für den modernen Datei-Upload an.