php - 在 PHP 中获取 Contact Form 7 表单 ID

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

我正在使用 contact form 7 将两种不同的表单加载到一个页面中,然后除了发送电子邮件之外,还将该信息动态添加到数据库中。不幸的是,由于插件的原因,我不能简单地创建所有具有不同名称的输入以避免需要过滤器。因此,从本质上讲,我想将表单 ID 拉入操作 Hook 并根据提交的表单动态创建 $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' );

最佳答案

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

例如:

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

关于php - 在 PHP 中获取 Contact Form 7 表单 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32707898/

相关文章:

html - 如何防止在表单发布后打开新窗口/标签

php8.0-dev 包安装 PHP 8.1 依赖项

PHP/MySql/变量循环?

php - 需要有编辑按钮,将字段更改为可编辑;在提交时改变数据库

php - 如何在 TreeView 中显示层次结构数据库?

php - 为 pdo php 建立 session

html - 使用 ids 而不是 name 属性来标识表单中的字段有什么隐藏的原因吗?

php - 执行shell命令时网页PHP无输出

PHP 不会从 MySQL 中删除

php - 根据用户输入 php 更新数据库