Скачать PDF после отправки формы CF7


Я работаю над сборкой клиента и хотел бы изменить как можно меньше. Я не слишком хорошо знаком со всем этим, мои извинения - я постараюсь показать, где я нахожусь.

Клиент хочет отправить форму, чтобы запросить загрузку PDF-файла. Существуют два разных PDF-файла, два экземпляра одной и той же формы. Заполните экземпляр формы 1, получите PDF A - Экземпляр формы 2, PDF B.

Вот как отображаются эти экземпляры:

<div id="whitepaper" class="home_whitepaper_bg w-clearfix">
  <?php $lpcnt=0; if(have_rows('whitepaper_list')): ?>
  <?php while(have_rows('whitepaper_list')): the_row(); $lpcnt++; ?>
<!-- Making rows for content, looping through and counting loops = lpcnt -->

<!--
... Other content ...
-->

  <?php 
   the_sub_field('whitepaper_download_form'); 
  ?>
  <?php
   $pdf=get_permalink().'?download='.get_sub_field('whitepaper_pdf');
  ?>
  <a data-fancybox data-src="#whitepaper_popup_<?php echo $lpcnt; ?>" data-redirect="<?php echo $pdf; ?>" href="javascript:;" class="whitepaper_download_link w-inline-block w-clearfix">
<!-- Here's the buttons for fancybox popups. They use the loop count to build a specific url - this is info I want later! -->

И во всплывающем окне окно:

    <div id="whitepaper_popup_<?php echo $lpcnt; ?>" class="whitepaper_popup">
<!-- using that loop count to get a specific div id! -->
        <div class="popup_whitepaper">
            <div class="whitepaper_form">
                <!-- 
I could put a <?php echo do_shortcode...> here, no? 
Their current solution is to grab a javascript code from an ACF field. 
I have had a lot of trouble figuring out how to put the CF7 form in that field.
                -->
                <?php the_sub_field('download_form'); ?>
                <div class="w-clearfix"></div>
            </div>
            <button data-fancybox-close="" class="fancybox-close-small"></button>
            <div class="w-clearfix"></div>
        </div>
    </div>

Верно. Так вот в чем дело. Затем, используя новые события DOM CF7, я смогу настроить перенаправление или аналог?

В functions.php :

add_action( 'wp_footer', 'mycustom_wp_footer' );

function mycustom_wp_footer() {
?>
<script type="text/javascript">
document.addEventListener( 'wpcf7mailsent', function( event ) {
if ( 'FORM ID' == event.detail.contactFormId ) {
    location = <!-- specific url derived from $lpcnt? -->;
}
}, false );
</script>
<?php
}

Я не уверен, на правильном ли я пути или нет - кроме того, не могу точно понять, как я могу получить правильный URL-адрес в свой прослушиватель событий wpcf7mailsent.

Author: Just Jeff, 2018-11-17

3 answers

Для этого вам не нужно много кода. просто перейдите в контактную форму > выберите контактную форму > дополнительная настройка, вставьте код ниже.
document.addEventListener( 'wpcf7mailsent', function( event ) { location = 'YOUR_PDF_URL';}, false );

 0
Author: Parth Shah, 2018-11-19 13:36:03

У меня возникла необходимость добавить CTA для загрузки после содержания всех тематических исследований веб-сайта, но "в обмен" на данные пользователя для:

  • отобразите форму CF7 на своей странице, у меня была одна и та же во всех тематических исследованиях, один тип публикации, который я подключил после содержимого
  • найдите способ получить нужный URL-адрес PDF для загрузки людьми, так как для меня все тематические исследования имеют другой PDF, я просто добавил поле ACF, отфильтрованное только для PDF, которое возвращает URL-адрес файла
  • на основе События CF7 Dom, выберите действие, которое вы предпочитаете, чтобы произошла загрузка, так как я не отправляю электронное письмо с подтверждением, я предпочитаю работать с событием wpcf7submit. Обратите внимание, что событие wpcf7submit запускается только в том случае, если форма была проверена

Итак, код выглядит так:

<?php 
// For simplicity, using an anonymous functions
add_action( 'wp_print_footer_scripts', function () {
    // Check the wanted singular post type loading
    if ( is_admin() || ! is_singular( 'case-study' ) ) {
        return;
    }

    // Check if the ACF PDF field is not empty for use
    $pdf_link = get_field( 'pdf' );
    if ( empty( $pdf_link ) ) {
        return;
    }

    // Hook on the "wpcf7submit" CF7 Dom event to force the download
    printf( "<script>document.addEventListener( 'wpcf7submit', function( event ) { window.open('%s'); }, false );</script>", $pdf_link );
} );
 0
Author: Maxime Culea, 2020-06-25 18:27:11

Попробуйте этот плагин:

  1. Загрузите плагин
  2. Установить
  3. Установите идентификатор формы и вложение PDF в настройках загрузки файла CF7.

Https://wordpress.org/plugins/cf7-file-download/

 0
Author: Semir, 2020-09-15 19:01:12