ここでは、Contact Form 7 のファイルアップロードとメール添付の機能について説明します。この機能により、フォーム経由でのファイルアップロード、そのファイルをメールに添付して送信することが可能になります。
セットアップには2つのステップが必要です。1) フォームにファイルアップロード項目を追加すること。2) アップロードされたファイルをメールに添付するように設定すること。以下、これらの手順について説明していきます。
ファイルアップロード項目をフォームに追加する
他のフォーム項目と同様、Contact Form 7 はファイルアップロード項目 (HTML における <input type="file">) のためのフォームタグとして、file と file* を用意しています。file* は必須項目で、ユーザーが必ずファイルをアップロードすることを求めます。
| オプション | 使用例 | 説明 |
|---|---|---|
| id:(id) | id:foo |
input 要素の id 属性値。 |
| class:(class) | class:bar |
input 要素の class 属性値。2個以上のクラスを設定する場合は複数の class: オプションを [file your-file class:y2008 class:m01 class:d01] のように並べる。 |
| tabindex:(num) | tabindex:10 |
input 要素の tabindex 属性値。 |
| filetypes:(ファイルタイプ) | filetypes:gif|png|jpg|jpeg |
受信可能なファイルタイプ。filetypes: の後にファイル拡張子を並べる。複数のファイルタイプを設定する場合はそれらを ‘|’ (パイプ) でつなげる。 |
| limit:(ファイルサイズ) | limit:1048576limit:1024kblimit:1mb |
受信可能な最大ファイルサイズを指定する。kb (キロバイト)、mb (メガバイト) の接尾辞を使って指定することも可能。それらが省略された場合はバイトが単位になる。小数表記 (例: [file your-file limit:1.5mb]) はできないので注意。 |
例:
[file your-file filetypes:pdf|txt limit:2mb]
filetypes: と limit: が明示的に指定されなかった場合、Contact Form 7 はファイルタイプとファイルサイズにデフォルトの制限を適用します。デフォルトの受信可能ファイルタイプ (の拡張子) は、jpg、jpeg、png、gif、pdf、doc、docx、ppt、pptx、odt、avi、ogg、m4a、mov、mp3、mp4、mpg、wav, wmv です。デフォルトの受信可能ファイルサイズは 1MB (1048576 バイト) です。
メールへのファイル添付を設定する
アップロードされたファイルをメールに添付するには、ファイルアップロード項目のフォームタグに対応するメールタグをファイル添付フィールドに以下のように追加します。

この例では、ファイルアップロード項目のフォームタグは以下のようになっていて:
[file your-file filetypes:pdf]
したがってこれに対応するメールタグは以下のようになります:
[your-file]
ファイル添付フィールドに入力する必要があるのは [your-file] の方です。[file your-file filetypes:pdf] ではないので注意してください。
メールに複数のアップロードされたファイルを添付したい場合は、以下のように単純に並べれば OK です:
[your-file][your-another-file]
アップロードされたファイルはどのように扱われるか
コンタクトフォームを経由してユーザーがファイルをアップロードすると、Contact Form 7 は 1) PHP のエラーが発生していないか、2) ファイルタイプとファイルサイズは適正か、についてチェックし、問題がない場合はそれらのファイルを一時フォルダに移動させます。その後 Contact Form 7 それらのファイルをメールに添付して送信します。これらの処理が完了したら、Contact Form 7 は一時フォルダにあるファイルを削除します。
この一時フォルダがどこにあるかは WordPress の設定に依存します。設定 > その他の設定 メニューを開いてアップロードするファイルの保存場所項目の設定を見てください。デフォルトでは wp-content/uploads になっているはずです。通常なら、Contact Form 7 はここに wpcf7_uploads というフォルダを作成し、これをアップロードファイルのための一時フォルダとして使用します。

このフォルダの作成は自動で行われますが、まれに作成に失敗する場合があります。最もありがちな原因はその親フォルダに対して必要な書き込み権限が与えられていないことです。そのような場合は、権限を変更するか、フォルダを手動で作成します。
また、以下のように wp-config.php 内で WPCF7_UPLOADS_TMP_DIR 定数を指定して一時フォルダのパスを設定することも可能です:
define( 'WPCF7_UPLOADS_TMP_DIR', '/your/file/path' );
WPCF7_UPLOADS_TMP_DIR が定義されている場合は、指定されたディレクトリが一時フォルダとして使われます。
アップロードファイルのための一時フォルダが存在し、また書き込み可能であることをよく確認してください。そうでない場合はファイルのアップロードが失敗します。
日本語
英語 
Comments are closed.