在 PHP 中获取 Contact Form 7 表单 ID
Get Contact Form 7 Form ID In PHP
我正在使用联系表单 7 将两种不同的表单加载到一个页面中,然后除了发送电子邮件之外,还将该信息动态添加到数据库中。不幸的是,由于插件的原因,我不能简单地创建所有具有不同名称的输入以避免需要过滤器。因此,从本质上讲,我想将表单 ID 拉入操作挂钩并根据提交的表单动态创建 $data 变量,但我不确定如何获取 cf7 表单 ID。有谁知道如何做到这一点,或者更可行的方法吗?
表单简码
[contact-form-7 id="221" title="Reg 1"] [contact-form-7 id="112" title="Reg 2"]
PHP 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' );
已解决:
我最后只是使用逻辑运算符来检查表单特定字段是否为空。如果提交表单时字段 "form_2_name" 为空,则我们知道正在提交表单 1。具有该逻辑的简单 if 语句就可以解决问题!
只需使用这个:
function save_form( $wpcf7 ) {
if($wpcf7->id == 4711) {
// whatever
}
}
我倾向于使用“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");
$wpcf7->id
不再可用,请改用 $wpcf7->id()
。
你可以使用这个:$form_id = $_POST['_wpcf7'];
我正在使用联系表单 7 将两种不同的表单加载到一个页面中,然后除了发送电子邮件之外,还将该信息动态添加到数据库中。不幸的是,由于插件的原因,我不能简单地创建所有具有不同名称的输入以避免需要过滤器。因此,从本质上讲,我想将表单 ID 拉入操作挂钩并根据提交的表单动态创建 $data 变量,但我不确定如何获取 cf7 表单 ID。有谁知道如何做到这一点,或者更可行的方法吗?
表单简码
[contact-form-7 id="221" title="Reg 1"] [contact-form-7 id="112" title="Reg 2"]
PHP 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' );
已解决:
我最后只是使用逻辑运算符来检查表单特定字段是否为空。如果提交表单时字段 "form_2_name" 为空,则我们知道正在提交表单 1。具有该逻辑的简单 if 语句就可以解决问题!
只需使用这个:
function save_form( $wpcf7 ) {
if($wpcf7->id == 4711) {
// whatever
}
}
我倾向于使用“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");
$wpcf7->id
不再可用,请改用 $wpcf7->id()
。
你可以使用这个:$form_id = $_POST['_wpcf7'];