Задача: Предоставить возможность пользователям прикреплять в форму обратной связи файл и отправлять его в виде почтового вложения получателю.
Решение: Сперва нам необходимо создать форму. Если вы не работали ранее с плагином Contact Form 7, то рекомендую начать с этой заметки.
После создания формы, нам необходимо создать специальное поле для загрузки (прикрепления) файла, которое так и называется Файл.
Перед вами возникнет всплывающее окно с настройками данного поля:
При желании можно заполнить предлагаемые поля настройки поля «файл», возможно полезно будет ограничивать пользователей в размере загружаемого файла или указать разрешенные для загрузки типы файлов, но всё это частные случаи.
Я оставлю все по умолчанию и добавлю в тело формы тег файл
Далее нам необходимо перейти на вкладку Письмо и добавить этот уникальный тег поля файл в специальный раздел для прикреплённых файлов:
- Добавляем…
- Сохраняем..
Обратите внимание, что в поле Прикреплённые файлы мы указываем шорткод с идентификатором поля, а не целиком, как он выглядел в момент создания!
Готово! Теперь у пользователей нашего сайта появилась возможность прикреплять к почтовому сообщению файл:
Пример посложнее
Задача: Мы ожидаем от пользователя файлы исключительно в формате PDF и размером не превышающим 3 мегабайта.
Решение: Нам нужно вернуться на вкладку Шаблон формы и заново генерировать почтовый тег (шорткод) Файл
Указываем нужные значения и вставляем полностью новый тег или дополняем параметрами ( limit:3mb filetypes:pdf ) старый
Если требуется ограничить размер загружаемого файла, то значения можно указать следующим образом:
limit:1048576
limit:1024kb
limit:1mb
Просто цифры — воспринимаются байтами, а если указать постфикс kb или mb, то значения будут восприниматься уже в килобайтах или мегабайтах.
Если вам нужно установить несколько типов файлов, в качестве разделителя используйте |
символ вертикальной черты.
Расширения файлов которые можно использовать можно подсмотреть тут:
// Image formats.
'jpg|jpeg|jpe'
'gif'
'png'
'bmp'
'tiff|tif'
'webp'
'ico'
'heic'
// Video formats.
'asf|asx'
'wmv'
'wmx'
'wm'
'avi'
'divx'
'flv'
'mov|qt'
'mpeg|mpg|mpe'
'mp4|m4v'
'ogv'
'webm'
'mkv'
'3gp|3gpp'
'3g2|3gp2'
// Text formats.
'txt|asc|c|cc|h|srt'
'csv'
'tsv'
'ics'
'rtx'
'css'
'htm|html'
'vtt'
'dfxp'
// Audio formats.
'mp3|m4a|m4b'
'aac'
'ra|ram'
'wav'
'ogg|oga'
'flac'
'mid|midi'
'wma'
'wax'
'mka'
// Misc application formats.
'rtf'
'js'
'pdf'
'swf'
'class'
'tar'
'zip'
'gz|gzip'
'rar'
'7z'
'exe'
'psd'
'xcf'
// MS Office formats.
'doc'
'pot|pps|ppt'
'wri'
'xla|xls|xlt|xlw'
'mdb'
'mpp'
'docx'
'docm'
'dotx'
'dotm'
'xlsx'
'xlsm'
'xlsb'
'xltx'
'xltm'
'xlam'
'pptx'
'pptm'
'ppsx'
'ppsm'
'potx'
'potm'
'ppam'
'sldx'
'sldm'
'onetoc|onetoc2|onetmp|onepkg'
'oxps'
'xps'
// OpenOffice formats.
'odt'
'odp'
'ods'
'odg'
'odc'
'odb'
'odf'
Механика работы
После того, как пользователь загружает файл через нашу контактную форму плагин Contact Form 7 производит ряд проверок и затем перемещает загруженный файл во временную папку, далее происходит прикрепления файла к почтовому сообщению, его отправка с последующим удалением этого файла из временной папки.
По умолчанию эта временная папка имеет адрес wp-content/uploads/wpcf7_uploads, она создаётся автоматически, но в некоторых случаях может произойти ошибка, как правило связанная с недостаточными правами на запись…
В этом случае стоит определить новое место для загрузки через константу, которую можно объявить в файле wp-config.php
define( 'WPCF7_UPLOADS_TMP_DIR', 'your-custom-tmp-dir' );
В качестве значения можно указать абсолютный путь или относительный. В случае относительного (как в примере) папка для загрузки будет создана в директории wp-content/