<html lang="ja-jp" dir="ltr"><head></head><body>### [ファイルアップロードの元のファイル名を保持する方法](https://wpforms.com/developers/how-to-retain-the-original-file-name-for-file-uploads/)

**公開日:** 2023年4月14日
**著者:** エディトリアルチーム

**抜粋:** このチュートリアルでは、メール通知内のアップロードされたファイルで元のファイル名を保持する方法を説明します。

**コンテンツ:**

## はじめに

**通知**タブの**詳細設定**から**ファイルアップロード添付ファイルを有効にする**オプションを有効にした際に、メール通知内のファイルの元のファイル名を保持したいですか？デフォルトでは、WPFormsはセキュリティ上の理由とファイル名の重複を避けるために、元のファイル名に英数字の文字列を追加します。しかし、このセキュリティレイヤーを削除したい場合は、PHPフィルターを使用して簡単に実現できます。このチュートリアルでは、その方法を詳しく説明します！

このスニペットはWordPressバージョン6.2でのみ使用できます。

## フォームの作成

新しいフォームを作成することから始めます。このドキュメントの目的のために、私たちはチーム独自のチームシャツを注文するための簡単なサインアップシートを作成します。基本的な情報を含めますが、デザインをアップロードできるように**ファイルアップロード**フィールドも追加します。

![フォームを作成し、フィールドを追加することから始めます。](https://wpforms.com/wp-content/uploads/2023/04/wpforms-orignal-file-name-create-form.jpg)

フォームの作成についてサポートが必要な場合は、[こちらの役立つガイドをご覧ください](https://wpforms.com/docs/creating-first-form/ "最初のフォームの作成")。

## ファイル添付を含めるオプションの有効化

フォームフィールドを追加したら、フォームビルダー内の**設定**タブをクリックします。次に、**通知**タブに移動し、下にスクロールして**詳細設定**を開きます。

**ファイルアップロード添付ファイルを有効にする**ボタンをトグルオンにし、添付ファイルを含めたいフィールドを選択します。このチュートリアルでは、**ファイルアップロード**フィールドは1つしかありませんので、このセクションにそのフィールドを追加するだけで済みます。

![通知タブから、詳細設定を開き、添付ファイルのアップロードを有効にするボタンをクリックします](https://wpforms.com/wp-content/uploads/2023/04/wpforms-enable-file-uploads.jpg)

## スニペットの追加

次に、スニペットをサイトに追加します。スニペットを自分のサイトに追加する方法についてサポートが必要な場合は、[こちらのチュートリアルで詳細をご確認ください](https://wpforms.com/developers/how-to-add-custom-php-or-javascript-for-wpforms/ "WPForms用のカスタムPHPまたはJavaScriptの追加方法")。

このスニペットを追加すると、すべてのフォームとファイルアップロードに適用されることに注意してください。

```

/**
 * ファイルアップロードで元のファイル名を保持する
 *
 * @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-&gt;form_data, $email_obj-&gt;notification_id, $email_obj-&gt;fields ) ) {
		return $email;
	}

	$form_data       = $email_obj-&gt;form_data;
	$notification_id = $email_obj-&gt;notification_id;
	$entry_fields    = $email_obj-&gt;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' ] ) &amp;&amp; $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 );
```

このスニペットは、メールへの添付ファイルを検索し、ハッシュ文字列を追加する代わりに、アップロードされた元のファイル名を保持します。

これで、メール添付ファイルの名前が **theres-no-base-like-home-svg-8abdd7ea434445587fb0e1b560b137b1.png** のようになる代わりに、スニペットが追加された後の名前は **theres-no-base-like-home-svg.png** になります。

![スニペットが追加された後、ファイル名の添付ファイルは元のファイル名になります。](https://wpforms.com/wp-content/uploads/2023/04/wpforms-retain-file-name.jpg)

ファイル名は、サーバーからそれらのファイルをダウンロードするための正しいURLを手動で特定されるのを防ぎ、またファイル名の重複からファイルを保護するためにハッシュ化されています。このスニペットを使用すると、WPFormsが実施するこれらのセキュリティ対策が無効になります。

これで、PHPフィルターを使用してメール通知のファイル添付ファイルの元のファイル名を正常に保持できました。訪問者が大きなファイルをアップロードするための時間を変更したいですか？[モダンファイルアップロードのタイムアウトを変更する方法](https://wpforms.com/developers/how-to-change-the-timeout-on-the-modern-file-upload/ "モダンファイルアップロードのタイムアウトを変更する方法")に関する記事をご覧ください。

**カテゴリー:** チュートリアル

**タグ:** ファイルアップロード, PHP

---</body></html>