我使用此代码作为 webhook 将 WordPress 中的 Contact Form 7 与 Bitrix CRM 集成。但我还需要获取表单所在的当前页面标题并将其添加到 JSON 记录中。我怎样才能做到?
add_action('wpcf7_mail_sent', 'your_wpcf7_mail_sent_function');
function your_wpcf7_mail_sent_function($contact_form)
{
// Перехватываем данные из Contact Form 7
$title = $contact_form->title;
// $posted_data = $contact_form->posted_data;
$submission = WPCF7_Submission::get_instance();
$posted_data = $submission->get_posted_data();
$firstName = $posted_data['your-name'];
$yourEmail = $posted_data['your-email'];
$yourPhone = $posted_data['your-phone'];
$queryUrl = 'https://****.bitrix24.eu/***/crm.lead.add';
$queryData = '{"fields":{"TITLE": "'.$title.'","NAME": "'.$firstName.'", "STATUS_ID": "NEW", "OPENED": "Y", "PHONE": [ { "VALUE": "'.$yourPhone.'", "VALUE_TYPE": "WORK" } ],"EMAIL": [ { "VALUE": "'.$yourEmail.'", "VALUE_TYPE": "WORK" } ],"SOURCE_ID": "WEB"},"params": { "REGISTER_SONET_EVENT": "Y" }}';
if($yourEmail == null || $yourEmail == ''){
$queryData = '{"fields":{"TITLE": "'.$title.'","NAME": "'.$firstName.'", "STATUS_ID": "NEW", "OPENED": "Y", "PHONE": [ { "VALUE": "'.$yourPhone.'", "VALUE_TYPE": "WORK" } ],"SOURCE_ID": "WEB"},"params": { "REGISTER_SONET_EVENT": "Y" }}';
}
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://****.bitrix24.eu/***/crm.lead.add',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $queryData,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
// echo $response;
// if (array_key_exists('error', $response)) echo "Ошибка при сохранении лида: " . $response['error_description'] . "<br/>";
$result = json_decode($response, 1);
if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."<br/>";
}
您可以在Cf7中使用包含多种信息的特殊标签,您可以在这里找到另一个类似的问题:如何通过联系表7获取帖子标题以及此处的官方文档:https://contactform7.com/special-mail -标签/
这些可以在您的表单电子邮件内容中使用,并将在您发送电子邮件时根据实际价值进行评估。
在您的情况下,将它们添加到电子邮件正文中将不起作用,因此您需要使用插件:https://wordpress.org/plugins/contact-form-7-dynamic-text-extension/#description
它有很多功能,但您正在搜索的功能是添加以下功能:
[dynamic_hidden my_post_title "CF7_get_current_var key='title'"]
这必须放置在联系表单正文内,并将在页面 HTML 内添加一个隐藏字段。您稍后可以使用以下方式获取:
$posted_data = $submission->get_posted_data();
$posted_data['my_post_title'] <---- this
已测试且有效