MW WP Formで作成したフォームからファイルを送信する際に、添付できるファイルの種類(拡張子)を限定する方法をご紹介いたします。
画像のみを送れるようにしたい時などに役立ちます。
MW WP Formの添付ファイルで送信できるファイルの種類を制限する方法
フォーム作成画面にあるバリデーションルールで制限する方法
MW WP Formには、添付ファイルの種類を制限する「拡張子制限」というバリデーションが用意されています。この機能を使えば、簡単に添付ファイルの種類を制限することができます。
フォーム作成画面でバリデーションルールを追加し、「拡張子制限」に限定したいファイルの拡張子を入力します。
上記では画像のみに制限していますので、画像以外を送信しようとすると、「許可されたファイルではありません。」とエラーで弾かれます。
独自のバリデーションルールを追加して制限する方法
続いて紹介するのは、独自のバリデーションルールを追加して制限する方法です。この方法だとエラーメッセージも変更できるので、複数の添付ファイル制限があって、種類ごとにエラーメッセージを変えたい時は独自のバリデーションルールで対応します。
例えば、nameが”file_img”の添付ファイルでは画像のみ、nameが”file_zip”の添付ファイルではZIPのみに制限したい場合は、適用しているテーマのfunctions.phpに以下のようなコードを追加します。
function my_mwform_filetype_rule($Validation) {
$Validation->set_rule('file_img', 'fileType', array(
'types' => 'png,jpeg,jpg,gif,webp',
'message' => '画像ファイルではありません。'
));
$Validation->set_rule('file_zip', 'fileType', array(
'types' => 'zip',
'message' => 'ZIPファイルではありません。'
));
return $Validation;
}
add_filter('mwform_validation_mw-wp-form-xxx', 'my_mwform_filetype_rule');
「mwform_validation_mw-wp-form-xxx」の”xxx”には、対象フォームのフォーム識別子のkey(数字)を入れてください。例えば、フォーム識別子が以下の場合は、「mwform_validation_mw-wp-form-123」とします。
[mwform_formkey key="123"]
それぞれ「$Validation->set_rule」でバリデーションルールを追加しています。typesでは許可するファイルの拡張子、messageではエラーメッセージを指定します。
許可されていないファイルを送信しようとすると、以下のようにエラーメッセージが表示されます。
あとがき
管理画面からも簡単に設定できるのはありがたいですね。
「画像のみを送れるようにしたい」という要望は結構あるので、MW WP Formを使っている場合は上述したいずれかの方法で対応しています。