Contact Form 7 - Как отправить вложение отправителю формы?
Я установил плагин Contact Form 7 на WordPress 3.2.1.
Я настроил контактную форму для пользователей, чтобы они могли запрашивать оценки.
Всё работает нормально, но я хотел бы, чтобы при отправке запроса пользователям автоматически отправлялось письмо с прикрепленной брошюрой о продукте.
Сейчас у меня настроено следующим образом:
Я пробовал использовать [file-691], где 691 это ID загруженного медиафайла в медиагалерее.
Оба способа не работают.
Как правильно реализовать эту задачу?

Насколько мне известно, функция, которую вы пытаетесь использовать, не предназначена для такого применения. На самом деле она создана для того, чтобы отправитель имел возможность загрузить файл, который будет прикреплен к его почтовому сообщению.
Не думаю, что такая возможность доступна в Contact Form 7.

Попробуйте использовать плагин Email Before Download в связке с Download Monitor. Они отлично интегрируются с Contact Form 7, и всё, что вам нужно сделать — выбрать ВЛОЖЕНИЕ (ATTACHMENT) для отправки по email вместо прямой ссылки на скачивание. Работает просто замечательно.

Извиняюсь за мой плохой английский и ещё более слабые навыки в PHP.
Вы можете использовать плагин email-before-download, но... у меня не получилось заставить его работать так, как я хотел.
Я попробовал немного поэкспериментировать с кодом, и, кажется, этот вариант работает. Не самый элегантный способ, но вы можете использовать ссылку на файл в поле вложения в админ-панели. Просто введите там что-то вроде "wp-content/uploads/2013/05/Файл.pdf" (без кавычек) вместо "[file-1234]" и поместите следующий код в ваш functions.php
function mycustom_cf_before_action(&$wpcf7_data) {
global $mailcounter;
$mailcounter = 0;
if ((!empty($wpcf7_data->mail['attachments'])) and (!(0 === strpos($wpcf7_data->mail['attachments'], '['))) ) {
global $cmail1;
$cmail1 = '';
$cmail1 = $wpcf7_data->mail['attachments'];
}
if ((!empty($wpcf7_data->mail_2['attachments'])) and (!(0 === strpos($wpcf7_data->mail_2['attachments'], '['))) ) {
global $cmail2;
$cmail2 = '';
$cmail2 = $wpcf7_data->mail_2['attachments'];
}
}
add_action('wpcf7_before_send_mail', 'mycustom_cf_before_action',1);
function mycustom_wpcf7_mail_components($components){
global $cmail1;
global $cmail2;
global $mailcounter;
if (($mailcounter == 0) and (!empty($cmail1)) and (empty($components['attachments']))) {
$components['attachments'][] = $cmail1;
}
if (($mailcounter == 1) and (!empty($cmail2)) and (empty($components['attachments']))) {
$components['attachments'][] = $cmail2;
}
$mailcounter = $mailcounter + 1;
return $components;
}
add_filter( 'wpcf7_mail_components', 'mycustom_wpcf7_mail_components' );
Первая функция проверяет наличие "статических" вложений. То есть любых, которые не начинаются с [
или не пустые.
Вторая функция добавляет статическое вложение при отправке. Я пробовал использовать "uploaded_files", но тогда вложения удалялись. Поскольку компоненты одинаковы для mail1 и mail2, необходимо вести подсчёт. Для этого используется $mailcounter
. $cmail1
и $cmail2
нужны для передачи ссылок на вложения в компоненты. На этом этапе CF7 больше не учитывает исходные данные контактной формы, поэтому это было единственное решение, которое я увидел.

Я полагаю, это тот самый плагин, о котором идет речь: https://wordpress.org/plugins/email-before-download/
