【问题标题】:CF7 Downloading file with multi form pageCF7 多表单页面下载文件
【发布时间】:2022-01-26 05:19:58
【问题描述】:

我不是开发人员,所以请不要关闭这个问题。 在联系表格 7 中,我尝试在提出潜在客户后下载文件。

没关系:

<script type="text/javascript">
document.addEventListener( 'wpcf7mailsent', function( event ) {
    if ( 'MyformID-1' == event.detail.contactFormId ) {
        window.open('https://www.example.com/file-1.pdf', '_self');    
    }
}, false );
</script>

(我只把这段代码放在相关页面上)

但在某些页面上,我有 2 或 3 个表单,每次下载一个不同的文件。它运行重复的所有脚本:

    <script type="text/javascript">
document.addEventListener( 'wpcf7mailsent', function( event ) {
    if ( 'MyformID-1' == event.detail.contactFormId ) {
        window.open('https://www.example.com/file-1.pdf', '_self');    
    }
}, false );
</script>


<script type="text/javascript">
document.addEventListener( 'wpcf7mailsent', function( event ) {
    if ( 'MyformID-2' == event.detail.contactFormId ) {
        window.open('https://www.example.com/file-2.pdf', '_self');    
    }
}, false );
</script>

我认为可以将所有这些合并为一个&lt;script&gt;,但我不知道如何。

我做了几次测试都没有成功,所以我在这里。

我也尝试了这里显示的代码,但没有成功:

<script type="text/javascript">
document.addEventListener( 'wpcf7mailsent', function( event ) {
    if ( 'MyformID-1' == event.detail.contactFormId ) {
        window.open('https://www.example.com/strong.pdf', '_self');   
    }
    if ( 'MyformID-2' == event.detail.contactFormId ) {
        window.open('https://www.example.com/green.pdf', '_self');   
    }
    if ( 'MyformID-3' == event.detail.contactFormId ) {
        window.open('https://www.example.com/orange.pdf', '_self');   
    }
}, false );
</script>

【问题讨论】:

    标签: contact-form-7


    【解决方案1】:

    你可以这样做:

    let filenames = {
        ['MyformID-1']: 'some.pdf',
        ['MyformID-2']: 'files.pdf',
        ['MyformID-3']: 'to.pdf',
        ['MyformID-4']: 'b.pdf',
        ['MyformID-5']: 'processed.pdf'
    };
    document.addEventListener( 'wpcf7mailsent', function( event ) {
        if (filenames[event.detail.contactFormId]) {
            window.open(`https://www.example.com/file-${filenames[event.detail.contactFormId]}`, '_self');
        }
    }, false );
    

    解释:

    • 我们有 filenames 作为文件的键值对,包含支持的(联系表单 ID;文件名)对
    • 我们可以使用单个监听器
    • 如果支持contactFormId
    • 然后我们重定向到一个链接
    • 用字符串模板指定
    • 我们将与联系表单 ID 关联的文件名作为模板文字传递

    我们也可以使用类似于 ^MyformID-[0-9]*$ 的正则表达式来解决这个问题(我不是正则表达式专家,所以如果有错字,我欢迎任何意见),但我认为确保您了解解决方案很重要。

    【讨论】:

    • 非常感谢您的回答,但我意识到我的示例以错误的方式影响了您。 file-1.pdf 和 file-2.pdf 不是这样命名的,但是彼此之间的文件名非常不同。
    • @ProTips 我认为我们可以同意,基于这个问题,这是一个合乎逻辑的答案。因此,如果文件名不同,则需要提供有关文件名的更多信息。
    • 是的,你说得对,我不应该这样写我的问题。对此我很抱歉。您可以认为每个类型的文件名都非常不同,就像一个迷你句子。
    • @ProTips 感谢您的澄清。为了解决这个问题,我们可以创建一个对象来表示联系表单 ID 和文件名的键值对。我已经编辑了我的答案并详细阐述了这个想法。
    猜你喜欢
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多