获取联系表格7 PHP中的表格ID

时间:2015-09-22 03:31:43

标签: php mysql forms contact-form contact-form-7

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

表格短代码

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

PHP Action Hook in functions.php

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' );

5 个答案:

答案 0 :(得分:3)

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

例如:

function processForm($cf7) {
    $wpcf7 = WPCF7_ContactForm::get_current();
    if($wpcf7->id == 221) {
        //Do Stuff
    }
    elseif($wpcf7->id == 112) {
        //Do different stuff
    }
}

add_action("wpcf7_posted_data", "processForm");

答案 1 :(得分:1)

只需使用:

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

您可以使用以下命令:$ form_id = $ _POST ['_ wpcf7'];

答案 4 :(得分:0)

求助:

我只是使用逻辑运算符检查表单特定字段是否为空。如果提交表单时字段“form_2_name”为空,那么我们知道表单1正在提交。如果使用该逻辑的语句很简单!