我正在使用DOM代码,我想在我的Wordpresssite上使用Contact Form 7。 这是我想要做的: 在用户汇总了一些个人信息后,他们应该通过下载获得pdf。 目前我只是将它们发送到pdf位置,您可以在以下脚本中看到:
<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
location = 'path_with_pdf_file';
}, false );
</script>
是否有一些简单的代码行我缺少开始下载? 非常感谢我能得到的每一个答案。
亲切的问候
答案 0 :(得分: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;
}