2017-06-06 83 views
0

我正在用我想在我的Wordpress網站上的聯繫表單7中使用的DOM代碼。 以下是我想要做的: 用戶申請了一些個人信息後,他們應該通過下載獲得pdf。 目前我只是把它們發送到PDF的位置,你可以在下面的腳本看:DOM事件 - 在發送電子郵件後開始下載

<script> 
     document.addEventListener('wpcf7mailsent', function(event) { 
     location = 'path_with_pdf_file'; 
     }, false); 
    </script> 

有一些簡單的代碼行我失蹤開始下載? 希望能得到每一個答案。

親切的問候

回答

0

我已經準備了3個解決方案爲您服務。我認爲第二個是最簡單的,並按照你的要求。

解決方案1 ​​

在你的情況window.location永遠不會工作,除非你做出HTTP請求和安裝頭告訴瀏覽器處理請求的字節流。

// PHP example code 
header('Content-disposition: attachment; filename=FILENAME.pdf'); 
header('Content-type: application/pdf'); 

解決方案2

最好的辦法是創造anchor元素,它擁有所有的下載信息,然後執行.click()方法。

讓我們來準備我們的功能,它將爲我們處理所有事情。

function downloadFile(path) { 
    var fileName = path.split('/').pop(); 
    // We create anchor 
    var element = document.createElement('a'); 
    // Let's add properties to our anchor 
    element.href = path; 
    element.download = fileName; 
    // Now we fire .click() method 
    element.click(); 
} 

document.addEventListener('wpcf7mailsent', function(event) { 
    downloadFile('http://domain/path/filename.pdf'); 
}, false); 

解決方案3

爲什麼不通過電子郵件發送PDF?要做到這一點,我們需要勾選wpcf7_before_send_mail動作。

這是我使用的代碼,應該使用最新的CF7

add_action("wpcf7_before_send_mail", "wpcf7_do_something_else"); 
function wpcf7_do_something_else($cf7) { 

    $wpcf = WPCF7_ContactForm::get_current(); 
    $mail = $cf7->prop('mail'); 
    // Use it if you need to access form Id 
    // $wpcf->id; 

    // Your attachment do magic here 
    $mail['attachments'] .= "\nuploads/regulations.pdf"; 

    $cf7->set_properties(array('mail' => $mail)); 

    return $wpcf; 
} 
+0

哦,嘿,非常感謝。從來沒有想過你的第三個解決方案。這對我來說真的是最好的選擇!謝謝! –