Динамическая отправка PDF, прикрепленного к записи, через Contact Form 7

24 янв. 2015 г., 19:56:01
Просмотры: 16.7K
Голосов: 1

Я пытаюсь отправить динамически созданный PDF файл, прикрепленный к записи, через плагин Contact Form 7.

Предполагаю, что мне нужно использовать хук:

add_action('wpcf7_before_send_mail','send_pdf');

Этот хук чаще всего встречается в решениях подобных задач.

Вот что у меня есть - сначала я пробую с тестовым PDF по абсолютному пути:

function send_pdf( $cf7 ) {
    // Проверяем ID нужной контактной формы
    if ($cf7->id==741){
        // Указываем путь к PDF файлу для вложения
        $cf7->uploaded_files = array ( 'pdf' => get_template_directory().'/test.pdf' );
    }
}

Если я правильно понимаю, при правильном ID контактной формы и наличии [pdf] в поле "File attachments" в настройках mail2, этот PDF должен отправляться по email человеку, заполнившему форму?

Однако у меня это не работает - письмо приходит, но без вложения.

Может я что-то упускаю? Или есть другой рабочий метод решения этой задачи?

0
Все ответы на вопрос 1
10

Попробуйте этот вариант. В CF7 3.9 была проведена внутренняя реструктуризация.

add_action('wpcf7_before_send_mail','send_pdf');

function send_pdf( $cf7 ) {
    $id = $cf7->id();
    if ($id==741){
        $submission = WPCF7_Submission::get_instance();
        $submission->add_uploaded_file('pdf', get_template_directory().'/test.pdf');
    }
}

Это должно сработать.

24 янв. 2015 г. 20:41:57
Комментарии

Ты прекрасный человек, всё работает отлично. О, возможно, тебе стоит добавить слэш перед test.pdf — это была опечатка с моей стороны. Может сбить с толку людей, которые будут это использовать :)

UzumakiDev UzumakiDev
24 янв. 2015 г. 20:55:34

Хорошее замечание насчёт опечатки. Рад, что всё работает!

WordPress Mike WordPress Mike
24 янв. 2015 г. 20:58:52

Ты не подскажешь, почему url test.pdf работал, а url вида /wp-content/uploads/2015/01/test.pdf — нет? Это что-то связано с правами плагина?

UzumakiDev UzumakiDev
24 янв. 2015 г. 22:13:56

Вы жестко прописываете URL?

WordPress Mike WordPress Mike
25 янв. 2015 г. 22:54:13

Думаю, вам нужен абсолютный путь. Попробуйте использовать get_home_path(); Сейчас у меня нет возможности проверить, но дайте знать, если сработает.

WordPress Mike WordPress Mike
25 янв. 2015 г. 23:33:38

Также посмотрите https://wordpress.org/support/topic/sending-an-attachment-using-contact-form-7, это мне очень помогло

jmarceli jmarceli
27 нояб. 2015 г. 16:06:52

У меня не работает. Письмо отправляет без проблем, но никаких вложений в нём нет.

adamj adamj
26 апр. 2016 г. 08:21:20

Раз этот ответ считается правильным, почему я получаю ошибку: Uncaught Error: Call to private method WPCF7_Submission::add_uploaded_file()?

Chris Pink Chris Pink
3 мар. 2021 г. 10:28:34

Крис Пинк, это изменилось в последнем обновлении CF7 — я сейчас пытаюсь найти новый способ. :-(

Tony Djukic Tony Djukic
4 мар. 2021 г. 23:32:50

@ChrisPink Вам нужно объединить эту функциональность с этим: https://stackoverflow.com/a/48189650/2757809

Tony Djukic Tony Djukic
5 мар. 2021 г. 18:58:50
Показать остальные 5 комментариев