Как прикрепить и отправить файл в плагине Contact Form 7?

Задача: Предоставить возможность пользователям прикреплять в форму обратной связи файл и отправлять его в виде почтового вложения получателю.

Решение: Сперва нам необходимо создать форму. Если вы не работали ранее с плагином Contact Form 7, то рекомендую начать с этой заметки.

После создания формы, нам необходимо создать специальное поле для загрузки (прикрепления) файла, которое так и называется Файл.

Перед вами возникнет всплывающее окно с настройками данного поля:

настройки поля

При желании можно заполнить предлагаемые поля настройки поля «файл», возможно полезно будет ограничивать пользователей в размере загружаемого файла или указать разрешенные для загрузки типы файлов, но всё это частные случаи.

Я оставлю все по умолчанию и добавлю в тело формы тег файл

добавлен тег файл

Далее нам необходимо перейти на вкладку Письмо и добавить этот уникальный тег поля файл в специальный раздел для прикреплённых файлов:

тег файла
  1. Добавляем…
  2. Сохраняем..

Готово! Теперь у пользователей нашего сайта появилась возможность прикреплять к почтовому сообщению файл:

контактная форма

Пример посложнее

Задача: Мы ожидаем от пользователя файлы исключительно в формате 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/

wp-content

Автор

Evgeni

Веб-разработчик, фрилансер и фанат WordPress с 2012 года. На этом сайте делюсь заметками для начинающих по разработке на WordPress. Надеюсь увидеть вас в числе своих подписчиков.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *