【问题标题】:Contact form 7 set field value with get request联系表格 7 通过获取请求设置字段值
【发布时间】:2014-07-26 11:13:18
【问题描述】:

我想用get request设置一个字段值

example.com/subscribe/?email=asfafs

但是当我加载上面有表单的页面时,表单不显示。我明白为什么它不能显示。因为表单本身也可以提交获取请求。我还安装了this 插件,它应该使我能够设置字段值,但它没有。

这就是我所拥有的:

<p>Uw naam (verplicht)<br />
    [text* input-name] </p>

<p>Uw email (verplicht)<br />
    [dynamictext dynamicname "CF7_GET key='email'"] </p>
<p>Onderwerp<br />
    [text your-subject] </p>

<p>Uw bericht<br />
    [textarea your-message] </p>

<p>[submit "Verzenden"]</p>

在我的页面中:

<?php echo do_shortcode('[contact-form-7 id="1062" title="Contactformulier 1"]'); ?>

我不介意为此使用不同的插件。如果有适合我需要的请告诉我。

【问题讨论】:

  • 你能详细说明一下吗?
  • 我稍微改变了我的问题。我希望现在更清楚了。
  • 你可以检查这个插件,你可以帮助wordpress.org/plugins/contact-form-7-dynamic-text-extension
  • 我已经下载了插件,现在当我向 url 添加获取请求时,表单仍然不显示。
  • 您是否在页面上正确添加了表单简码?

标签: php html wordpress forms contact-form-7


【解决方案1】:

在我的情况下 [default:get] 不起作用,因此我按照以下步骤操作

  1. [text* package id:package readonly] for url = "http://www.example.se/package-quote/?package=Basic"
  2. 在footer.php中编写jquery脚本

http://toihid.com/contact-form-7-set-field-value-with-get-request/

【讨论】:

    【解决方案2】:

    如果您对每个表单元素有任何特定的逻辑,您也可以使用wpcf7_form_tag 挂钩

    // define the wpcf7_form_tag callback
    function filter_wpcf7_form_tag( $scanned_tag, $replace ) {
    
        // set default option for your field
        if($scanned_tag['name'] == 'my-field' && isset($_GET['my-param'])){
            $scanned_tag['options'][] = sprintf('default:%s', $_GET['my-param']);
        }
    
        // repeat operation for another field
    
        return $scanned_tag;
    };
    
    // add the filter
    add_filter( 'wpcf7_form_tag', 'filter_wpcf7_form_tag', 10, 2 );
    

    【讨论】:

      【解决方案3】:

      按照这个article

      如果您想将值发送到选择列表,可以通过在字段代码中添加参数default:get 轻松完成:

      [select* the-recipient default:get "Employee One|employeeone@yourdomain.com" "Employee Two|employeetwo@yourdomain.com" "Employee Three|employeethree@yourdomain.com"]
      

      然后在GET请求中发送参数,如:

      http://yourdomain.com/contact/?the-recipient=Employee%20Two
      

      【讨论】:

        【解决方案4】:

        您可以最初在表单字段中设置唯一的文本,然后使用挂钩将其替换为所需的值。然后就不需要插件了。

        示例。在表单代码中:

        <p>Phone<br />
        [text phone "PHONE_VALUE"] </p>
        

        在functions.php中:

        add_filter( 'wpcf7_form_elements', function( $form ) {
          $form = str_replace( 'PHONE_VALUE', $_GET['phone'], $form );
          return $form;
        } );
        

        在网址中:

        example.com/page?phone=111111
        

        【讨论】:

          【解决方案5】:

          [text* your-name default:get] 该字段将从具有相同名称(“your-name”)的GET 变量中获取其默认值。通过使用附加查询字符串访问表单页面的URL 来尝试此操作:

          http://example.com/contact/?your-name=John+Smith

          但是,如果您在一个表单标签中有两个或多个默认选项怎么办?让我们考虑一下这个表单标签的情况:

          [text* your-name default:get default:post_meta "Your Name"]

          【讨论】:

          【解决方案6】:

          我知道这个问题已经得到解答,但对于正在寻找不需要插件的解决方案的任何人,我选择执行以下操作。

          首先,我通过 Wordpress 仪表板在插件中创建了表单。我添加了我想保存来自 URL 的参数的字段并为其分配了一个 ID。

          [text page-name class:form-control id:source minlength:2 maxlength:80]

          接下来我添加了一个链接,可以像这样将参数传递给表单

          &lt;a href='http://mycoolwebsite.com/contact?id=homepage'&gt;Contact Us&lt;/a&gt;

          然后使用一些 JavascriptJQuery 从 URL 中获取 id 参数并将其设置为我在表单中输入的值。 (getParameterByName(name,url) 函数取自这个答案:How can I get query string values in JavaScript?

          function getParameterByName(name, url) {
              if (!url) url = window.location.href;
              url = url.toLowerCase(); 
              name = name.replace(/[\[\]]/g, "\\$&");
              var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
                  results = regex.exec(url);
              if (!results) return null;
              if (!results[2]) return '';
              return decodeURIComponent(results[2].replace(/\+/g, " "));
          }
          var param = getParameterByName('id');
          jQuery('#source').hide();
          jQuery('#source').prop('disabled', true);
          jQuery('#source').attr('value', param);
          jQuery('#source').val(param);
          

          我还隐藏和禁用了输入字段,因此它不可见,也不能(轻松地)修改。我还使用CSS隐藏输入字段

          #source{visibility:hidden}

          通过这种方式,我可以从网站内的任何位置链接到表单,并附加此人的来源,并将其放在我收到的电子邮件中。

          我没有发现这种方法有任何问题,并且不需要使用插件。我确信依赖 Javascript 并不理想,但同样不适合用于您网站上的许多插件,因为它们很快就会过时并且经常会导致彼此之间发生冲突。

          希望这可以帮助任何寻找替代方案的人。我想知道人们对这种方式的看法,因为我愿意接受有关如何改进它的建议。

          【讨论】:

            【解决方案7】:

            我刚刚安装了您链接的插件并对其进行了测试。该插件并不意味着为 Contact Form 7 中的字段提取 GET 变量。该插件将做两件事

            1. 它将获取 $_GET 变量并用它创建一个隐藏字段。
            2. 它将在页面上显示变量(就像文本一样,而不是在字段中)

            您在示例中的简码供此http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/ 插件使用。我也下载并测试了那个插件,它似乎工作得很好。

            这是我创建示例的页面。 http://jtwebb.com/stackoverflow-question/?someemail=asdf 如果你想看看它是否与动态文本扩展插件一起使用。

            更新:这是我的联系表格 7 代码:

            <p>Your Name (required)<br />
                [text* your-name] </p>
            
            <p>[showparam someemail] <-- this is the shortcode of show param, just text no field</p>
            
            <p>[getparam someemail] If you inspect this you'll see a hidden get field with the value of 'someemail' in it.</p>
            
            <p>Your Email (required)<br />
                [dynamictext* dynamictext-380 "CF7_GET key='someemail'"]<br>This field was created with <a href="http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/">http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/</a></p>
            
            <p>Subject<br />
                [text your-subject] </p>
            
            <p>Your Message<br />
                [textarea your-message] </p>
            
            <p>[submit "Send"]</p>
            

            【讨论】:

            • 谢谢。我自己有点想通了。我只需要稍微调整一下动态文本扩展插件的代码。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-11-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-06-05
            相关资源
            最近更新 更多