在 PHP 中获取联系表 7 表单 ID

Posted

技术标签:

【中文标题】在 PHP 中获取联系表 7 表单 ID【英文标题】:Get Contact Form 7 Form ID In PHP 【发布时间】:2015-12-18 21:38:08 【问题描述】:

我正在使用联系表单 7 将两种不同的表单加载到一个页面中,然后除了发送电子邮件之外,还将该信息动态添加到数据库中。不幸的是,由于该插件,我不能简单地创建具有不同名称的所有输入以避免需要过滤器。因此,基本上,我想将表单 ID 拉入操作挂钩并根据提交的表单动态创建 $data 变量,但我不确定如何获取 cf7 表单 ID。有谁知道如何做到这一点,或者可能是一种更可行的方法?

表单简码

[contact-form-7 id="221" title="Reg 1"] [contact-form-7 id="112" title="Reg 2"]

functions.php 中的 PHP Action Hook

function save_form( $wpcf7 ) 


global $wpdb;

   $form_to_DB = WPCF7_Submission::get_instance();

   if($form_to_DB) 
       $formData = $form_to_DB->get_posted_data(); 
   

   if("Request a Free Demo" != $formData['demo_request'][0])
   $freeDemo = "yes";else  $freeDemo = "nope";

   if(THE FORM ID = 221) 
   $data = array(
          some values from the 112 form
      $wpdb->insert( $wpdb->prefix . 'registrations', $data );
   );
   elseif(THE FORM ID = 112) 
     $data = array(
          some other values from the 112 form
   $wpdb->insert( $wpdb->prefix . 'registrations_2', $data );
   );
   




remove_all_filters('wpcf7_before_send_mail');
add_action('wpcf7_before_send_mail', 'save_form' );

【问题讨论】:

【参考方案1】:

我倾向于使用“wpcf7_posted_data”动作钩子(尽管这可能已经改变,因为这个问题现在有点老了)。您无需删除所有过滤器。

例如:

function processForm($cf7)

    $wpcf7 = WPCF7_ContactForm::get_current();

    $form_id = $wpcf7->id;

    if ($form_id === 221)
    
        //Do Stuff
    

    else if ($form_id === 112)
    
        //Do different stuff
    


add_action("wpcf7_posted_data", "processForm");

【讨论】:

这个答案应该被标记为正确的【参考方案2】:

你可以这样使用:$form_id = $_POST['_wpcf7'];

【讨论】:

【参考方案3】:

$wpcf7->id不再可用,请改用$wpcf7->id()

【讨论】:

【参考方案4】:

只需使用这个:

function save_form( $wpcf7 ) 
    if($wpcf7->id == 4711) 
        // whatever
    

【讨论】:

添加一些解释,说明此答案如何帮助 OP 解决当前问题【参考方案5】:

已解决:

我最后只是使用逻辑运算符来检查表单特定字段是否为空。如果提交表单时“form_2_name”字段为空,则我们知道正在提交表单 1。具有该逻辑的简单 if 语句就可以了!

【讨论】:

以上是关于在 PHP 中获取联系表 7 表单 ID的主要内容,如果未能解决你的问题,请参考以下文章

如何从 URL 获取值并将其添加为联系表 7 中的隐藏字段

在PHP中嵌入联系人表单7

如何在联系表格 7 WP 中选中复选框

Wordpress 联系表 7 插件提交到特定页面

php 从不需要它的页面中删除联系表单7脚本和css

如何更改联系表单 7 的表单操作 url?