1 php wordpress hook action contact-form-7
我使用 CF7 来获取用户详细信息。当用户提交他的表单时,我想将输入字段放到我的 custom.php 文件中并在那里做一些事情。
我试着用 js on_sent_ok: URL/custom.php?...fields data.. 来做这件事……但我认为这不是正确的方法。但无论如何这对我有用。
有没有办法用钩子动作来做到这一点?我试过这个。
function wpcf7_do_something (&$cfdata) {
$goURL = 'http://contactform7.com';
$cfdata->set_properties( array( 'additional_settings' => "on_sent_ok: \"location = '".$goURL."';\"" ) );
}
add_action("wpcf7_before_send_mail", "wpcf7_do_something");
Run Code Online (Sandbox Code Playgroud)
我试图 echo something ,触发 js console.log,并在 wpcf7_do_something 函数内部重定向,但没有任何效果。我真的不知道它是否有效。
有没有办法测试这个动作是否有效?有没有办法重定向到另一个位置?
谢谢
小智 5
一旦您在成功提交后转发用户,您的表单数据就会丢失。可以通过钩入CF7提供的before_send_mail动作钩子来拦截WP中的表单数据处理。这允许您访问服务器上的表单数据,必要时对其进行预处理,然后将数据 POST 到您的自定义处理器脚本。
// Create the new wordpress action hook before sending the email from CF7
add_action( 'wpcf7_before_send_mail', 'my_conversion' );
function my_conversion( $contact_form ) {
$submission = WPCF7_Submission::get_instance();
// Get the post data and other post meta values.
if ( $submission ) {
$posted_data = $submission->get_posted_data();
// these variables are examples of other things you may want to pass to your custom handler
$remote_ip = $submission->get_meta( 'remote_ip' );
$url = $submission->get_meta( 'url' );
$timestamp = gmdate("Y-m-d H:i:s", $submission->get_meta( 'timestamp' ));
$title = wpcf7_special_mail_tag( '', '_post_title', '' );
// If you have checkboxes or other multi-select fields, make sure you convert the values to a string
$mycheckbox1 = implode(", ", $posted_data["checkbox-465"]);
$mycheckbox2 = implode(", ", $posted_data["checkbox-466"]);
// Encode the data in a new array in JSON format
$data = json_encode(array(
"posted_key_name_1" => "{$posted_data['input-name-1']}",
"posted_key_name_2" => "{$posted_data['input-name-2']}",
"posted_key_name_..." => "{$posted_data['input-name-...']}",
"posted_key_name_n" => "{$posted_data['input-name-n']}",
// any additional data to include that wasn't part of the form post?
"From URL" => "$url",
"From IP" => "$remote_ip",
"Page Title" => "$title"
));
// Finally send the data to your custom endpoint
$ch = curl_init("https://www.YOURDOMAIN.com/custom.php");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,5); //Optional timeout value
curl_setopt($ch, CURLOPT_TIMEOUT, 5); //Optional timeout value
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将在 CF7 处理表单并发送确认邮件之前将选定的表单数据发布到您的自定义处理器。您仍然希望通过显示表单已提交的 CF7 确认消息或使用 JS 重定向 -> on_sent_ok: https://yourdomain将用户转发到感谢页面来确保用户体验令人满意。 com/谢谢/
如果因为处理器页面生成对用户很重要的信息而需要用户访问您的自定义处理器页面,您可以将所有表单数据打包成一个 URL 字符串并将其附加到处理 URL 上。然后,在您的 processing.php 代码中,您将使用 $_GET[] 来访问数据。
有关如何动态更新设置重定向 URL 的详细信息,请参阅本文:如何更改联系表单 7 动态重定向 URL - WordPress
从此页面向 webhook 代码提交数据:http : //moometric.com/integrations/wp/contact-form-7-zapier-webhook-json-post/
| 归档时间: |
|
| 查看次数: |
8362 次 |
| 最近记录: |