{"id":346937,"date":"2026-07-30T10:04:47","date_gmt":"2026-07-30T10:04:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/multi-file-upload-addon-for-contact-form-7-bs-addons\/"},"modified":"2026-08-20T14:07:26","modified_gmt":"2026-08-20T14:07:26","slug":"bunny-co-multiple-file-upload-cf7","status":"publish","type":"plugin","link":"https:\/\/ru.wordpress.org\/plugins\/bunny-co-multiple-file-upload-cf7\/","author":23164263,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Multiple File Upload for Contact Form 7","header_author":"hell0bunny","header_description":"Addon for Contact Form 7 that adds a drag-and-drop multiple file upload field.","assets_banners_color":"ede9d9","last_updated":"2026-08-20 14:07:26","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/profiles.wordpress.org\/hell0bunny\/","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/hell0bunny\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":153,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"hell0bunny","date":"2026-08-20 08:36:50"},"1.1.0":{"tag":"1.1.0","author":"hell0bunny","date":"2026-08-20 14:07:26"}},"upgrade_notice":{"1.1.0":"<p>Adds custom button labels and per-form file saving (media library or wp-content folder), with mail-tag file links.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3628355,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3628355,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3628355,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3628355,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3657036,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=wpcf7\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"contact-form-7\"}},{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"bunny-co-multiple-file-upload-cf7\"}}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3628355,"resolution":"1","location":"assets","locale":"","width":836,"height":832},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3628355,"resolution":"2","location":"assets","locale":"","width":815,"height":501},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3628355,"resolution":"3","location":"assets","locale":"","width":714,"height":298},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3628355,"resolution":"4","location":"assets","locale":"","width":1239,"height":421},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3628355,"resolution":"5","location":"assets","locale":"","width":1305,"height":625},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3657024,"resolution":"6","location":"assets","locale":"","width":1024,"height":691}},"screenshots":{"1":"Multi-file form-tag generator in the Contact Form 7 editor","2":"Frontend contact form with the drag-and-drop upload field","3":"Selected files list with remove controls and file count","4":"Submitted files attached to the Contact Form 7 notification email","5":"Mail tab showing the multi-file mail-tag in the message body and File attachments fields","6":"Per-form Multi-file Upload settings: save to the media library or a wp-content folder, organize by form name, and set the saved file name"}},"plugin_section":[],"plugin_tags":[1346,1152,3938,5887,273669],"plugin_category":[50],"plugin_contributors":[272953],"plugin_business_model":[],"class_list":["post-346937","plugin","type-plugin","status-publish","hentry","plugin_tags-attachments","plugin_tags-contact-form-7","plugin_tags-drag-and-drop","plugin_tags-file-upload","plugin_tags-multiple-files","plugin_category-media","plugin_contributors-hell0bunny","plugin_committers-hell0bunny"],"banners":{"banner":"https:\/\/ps.w.org\/bunny-co-multiple-file-upload-cf7\/assets\/banner-772x250.png?rev=3628355","banner_2x":"https:\/\/ps.w.org\/bunny-co-multiple-file-upload-cf7\/assets\/banner-1544x500.png?rev=3628355","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bunny-co-multiple-file-upload-cf7\/assets\/icon-128x128.png?rev=3628355","icon_2x":"https:\/\/ps.w.org\/bunny-co-multiple-file-upload-cf7\/assets\/icon-256x256.png?rev=3628355","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bunny-co-multiple-file-upload-cf7\/assets\/screenshot-1.png?rev=3628355","caption":"Multi-file form-tag generator in the Contact Form 7 editor"},{"src":"https:\/\/ps.w.org\/bunny-co-multiple-file-upload-cf7\/assets\/screenshot-2.png?rev=3628355","caption":"Frontend contact form with the drag-and-drop upload field"},{"src":"https:\/\/ps.w.org\/bunny-co-multiple-file-upload-cf7\/assets\/screenshot-3.png?rev=3628355","caption":"Selected files list with remove controls and file count"},{"src":"https:\/\/ps.w.org\/bunny-co-multiple-file-upload-cf7\/assets\/screenshot-4.png?rev=3628355","caption":"Submitted files attached to the Contact Form 7 notification email"},{"src":"https:\/\/ps.w.org\/bunny-co-multiple-file-upload-cf7\/assets\/screenshot-5.png?rev=3628355","caption":"Mail tab showing the multi-file mail-tag in the message body and File attachments fields"},{"src":"https:\/\/ps.w.org\/bunny-co-multiple-file-upload-cf7\/assets\/screenshot-6.png?rev=3657024","caption":"Per-form Multi-file Upload settings: save to the media library or a wp-content folder, organize by form name, and set the saved file name"}],"raw_content":"<!--section=description-->\n<p>Give any Contact Form 7 form a clean multiple-file field. Visitors drag files in or click to browse. You control the button text, file types, size limits, and where each form stores uploads.<\/p>\n\n<p><strong>Upload that feels easy<\/strong><\/p>\n\n<ul>\n<li>Drag and drop, or click the browse button<\/li>\n<li>Several files in one field \u2014 no extra <code>[file]<\/code> tags<\/li>\n<li>Custom button label (default: Choose files) and CSS class<\/li>\n<li>Optional or required: <code>[hbwa_mfile]<\/code> \/ <code>[hbwa_mfile*]<\/code><\/li>\n<li>Limits you set: file types, size per file, and max number of files<\/li>\n<\/ul>\n\n<p><strong>Save files your way \u2014 per form<\/strong><\/p>\n\n<p>Each form has its own <strong>Multi-file Upload<\/strong> tab. Turn saving on only where you need it.<\/p>\n\n<ul>\n<li><strong>Media library<\/strong> \u2014 add uploads to WordPress Media<\/li>\n<li><strong>Folder under wp-content<\/strong> \u2014 keep files in a path you choose, such as <code>uploads\/invoices<\/code><\/li>\n<\/ul>\n\n<p><strong>Folders that stay organized<\/strong><\/p>\n\n<p>When you save under wp-content, pick how subfolders are created:<\/p>\n\n<ul>\n<li>By year<\/li>\n<li>By year \/ month (same idea as the WordPress media library)<\/li>\n<li>By year \/ month \/ day<\/li>\n<li>By logged-in user<\/li>\n<li>By user \/ year<\/li>\n<li>By form name (slug, for example <code>contact-form-1<\/code>)<\/li>\n<li>Custom pattern, such as <code>{year}\/{form_slug}<\/code><\/li>\n<\/ul>\n\n<p>Name saved files with tokens like <code>{filename}<\/code>, <code>{date}<\/code>, <code>{time}<\/code>, and <code>{random}<\/code>. The original extension is always kept.<\/p>\n\n<p><strong>Email that is ready to open<\/strong><\/p>\n\n<ul>\n<li>Attach files in the Mail tab with the matching mail-tag, for example <code>[attachments]<\/code><\/li>\n<li>Put the same tag in the message body<\/li>\n<li>When saving is on, that tag becomes a <strong>link to open each file<\/strong> instead of a plain name<\/li>\n<\/ul>\n\n<p><strong>Built for Contact Form 7<\/strong><\/p>\n\n<ul>\n<li><strong>multi-file<\/strong> button in the form-tag generator<\/li>\n<li>Works with Mail and Mail (2)<\/li>\n<li>Settings apply to that form only \u2014 other forms stay unchanged<\/li>\n<\/ul>\n\n<p><strong>Requirements<\/strong><\/p>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/contact-form-7\/\">Contact Form 7<\/a> must be installed and active<\/li>\n<\/ul>\n\n<h3>How to use the shortcode<\/h3>\n\n<ol>\n<li>Edit a Contact Form 7 form.<\/li>\n<li>Click the <strong>multi-file<\/strong> button in the form-tag generator.<\/li>\n<li>Set the field name, button label, CSS class, file types, size limit, and max files, then insert the tag.<\/li>\n<li>In the <strong>Mail<\/strong> tab, add the same field name under <strong>File attachments<\/strong> (for example <code>[attachments]<\/code>).<\/li>\n<li>Optionally add the same mail-tag in the message body.<\/li>\n<li>Open the <strong>Multi-file Upload<\/strong> tab if you want to keep copies: enable <strong>Save uploaded files<\/strong>, then choose Media library or a folder under wp-content.<\/li>\n<\/ol>\n\n<p><strong>Basic shortcode examples<\/strong><\/p>\n\n<p>Optional field:<\/p>\n\n<pre><code>[hbwa_mfile attachments]\n<\/code><\/pre>\n\n<p>Required field:<\/p>\n\n<pre><code>[hbwa_mfile* attachments]\n<\/code><\/pre>\n\n<p>Custom button label and class:<\/p>\n\n<pre><code>[hbwa_mfile* attachments class:my-upload-btn \"Select files\"]\n<\/code><\/pre>\n\n<p>With options:<\/p>\n\n<pre><code>[hbwa_mfile* attachments filetypes:jpg|jpeg|png|pdf|doc|docx limit:2mb maxfiles:5 \"Choose file\"]\n<\/code><\/pre>\n\n<p><strong>Shortcode options<\/strong><\/p>\n\n<ul>\n<li>Quoted value \u2014 browse button label (default: Choose files)<\/li>\n<li><code>class:<\/code> \u2014 CSS class added to the file input and the browse button<\/li>\n<li><code>filetypes:<\/code> \u2014 pipe-separated extensions (example: <code>jpg|jpeg|png|pdf<\/code>)<\/li>\n<li><code>limit:<\/code> \u2014 max size per file (example: <code>2mb<\/code>, <code>500kb<\/code>, or bytes)<\/li>\n<li><code>maxfiles:<\/code> \u2014 maximum number of files allowed in one submission<\/li>\n<\/ul>\n\n<p><strong>Save files (per form)<\/strong><\/p>\n\n<p>On the form\u2019s <strong>Multi-file Upload<\/strong> tab:<\/p>\n\n<ol>\n<li>Enable <strong>Save uploaded files<\/strong>.<\/li>\n<li>Choose <strong>one<\/strong> destination:\n\n<ul>\n<li><strong>Media library<\/strong><\/li>\n<li><strong>Folder under wp-content<\/strong> \u2014 base path relative to <code>wp-content<\/code> (for example <code>uploads\/invoices<\/code>), then organize subfolders by year, month, user, form name slug, or a custom pattern<\/li>\n<\/ul><\/li>\n<li>Optional <strong>File name<\/strong> pattern (default <code>{filename}<\/code>). The original extension is always kept.<\/li>\n<\/ol>\n\n<p>When saving is enabled, the mail-tag in the message body outputs links to open each file.<\/p>\n\n<p>Uploaded files are sent as real email attachments when Contact Form 7 file uploading is enabled for that mail template. Make sure your hosting PHP upload limits (<code>upload_max_filesize<\/code>, <code>post_max_size<\/code>) allow the sizes you configure.<\/p>\n\n<p><strong>Guidelines<\/strong><\/p>\n\n<ul>\n<li>Always put the matching mail-tag in <strong>File attachments<\/strong> if you want files attached to the email.<\/li>\n<li>Use <code>[hbwa_mfile*]<\/code> when at least one file is required.<\/li>\n<li>Keep <code>maxfiles:<\/code> and <code>limit:<\/code> realistic for your server and mailbox size limits.<\/li>\n<li>Restrict <code>filetypes:<\/code> to what you actually need (for example images and PDFs only).<\/li>\n<li>This field does not replace CF7\u2019s native <code>[file]<\/code> tag \u2014 use <code>[hbwa_mfile]<\/code> when you need multiple files and drag-and-drop.<\/li>\n<\/ul>\n\n<p>Author: <a href=\"https:\/\/profiles.wordpress.org\/hell0bunny\/\">hell0bunny<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>bunny-co-multiple-file-upload-cf7<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate <strong>Multiple File Upload for Contact Form 7<\/strong> through the <strong>Plugins<\/strong> screen<\/li>\n<li>Make sure Contact Form 7 is installed and active<\/li>\n<li>Edit a Contact Form 7 form<\/li>\n<li>Click the <strong>multi-file<\/strong> button in the form-tag generator<\/li>\n<li>Insert the tag into the Form tab<\/li>\n<li>Add the matching mail-tag to the Mail tab <strong>File attachments<\/strong> field (and optionally the message body)<\/li>\n<li>Optional: open the form\u2019s <strong>Multi-file Upload<\/strong> tab to save files to the media library or a <code>wp-content<\/code> folder<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"are%20uploaded%20files%20attached%20to%20the%20email%3F\"><h3>Are uploaded files attached to the email?<\/h3><\/dt>\n<dd><p>Yes. Add the field\u2019s mail-tag (for example <code>[attachments]<\/code>) to the Mail tab <strong>File attachments<\/strong> box. Contact Form 7 will attach the uploaded files to the notification email. Place the same mail-tag in the message body to show file names, or openable links when <strong>Save uploaded files<\/strong> is enabled on that form.<\/p><\/dd>\n<dt id=\"how%20do%20i%20make%20the%20upload%20required%3F\"><h3>How do I make the upload required?<\/h3><\/dt>\n<dd><p>Use the required form-tag: <code>[hbwa_mfile* your-field-name ...]<\/code>.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20the%20choose%20files%20button%20text%3F\"><h3>How do I change the Choose files button text?<\/h3><\/dt>\n<dd><p>In the tag generator, set <strong>Button label<\/strong>. If you leave it empty, the button shows \u201cChoose files\u201d. Example: <code>[hbwa_mfile attachments \"Select files\"]<\/code>.<\/p><\/dd>\n<dt id=\"where%20are%20files%20stored%3F\"><h3>Where are files stored?<\/h3><\/dt>\n<dd><p>By default they stay in Contact Form 7\u2019s temporary folder and are attached to the email. On the form\u2019s <strong>Multi-file Upload<\/strong> tab, enable <strong>Save uploaded files<\/strong> and choose the media library or a folder under <code>wp-content<\/code>. You can organize that folder by year, month, user, or the form name slug.<\/p><\/dd>\n<dt id=\"can%20each%20form%20save%20files%20differently%3F\"><h3>Can each form save files differently?<\/h3><\/dt>\n<dd><p>Yes. Saving, destination, folder layout, and file name are set on that form\u2019s <strong>Multi-file Upload<\/strong> tab only.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Custom browse button label and class<\/li>\n<li>Per-form save option: media library or a folder under wp-content<\/li>\n<li>Organize saved folders by year, month, user, form name slug, or custom tokens<\/li>\n<li>Custom saved file names<\/li>\n<li>Mail-tag outputs file links when saving is enabled<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: <code>[hbwa_mfile]<\/code> multi-file field with drag-and-drop, limits, and CF7 mail attachment support<\/li>\n<\/ul>","raw_excerpt":"Drag-and-drop multiple file uploads for Contact Form 7, with per-form storage, custom folders, and clickable email links.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/346937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=346937"}],"author":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/hell0bunny"}],"wp:attachment":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=346937"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=346937"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=346937"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=346937"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=346937"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=346937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}