如何获取Contact Form7所在页面标题并添加至Bitrix CRM的JSON记录?
获取Contact Form 7所在页面标题并同步到Bitrix CRM
要获取表单所在页面的标题并添加到同步到Bitrix的JSON数据中,你可以通过Contact Form 7的WPCF7_Submission实例拿到当前页面ID,再用WordPress内置函数提取页面标题,具体修改如下:
步骤1:获取当前页面标题
在函数中拿到提交实例后,添加代码获取页面标题:
// 获取表单所在页面的ID $container_post_id = $submission->get_meta('container_post_id'); // 根据ID获取页面标题,兼容页面不存在的情况 $page_title = $container_post_id ? get_the_title($container_post_id) : '未知页面';
步骤2:将页面标题加入Bitrix的JSON数据
你可以选择把页面标题合并到现有字段(比如线索标题),或者单独添加到备注/自定义字段,以下是两种常用方式:
方式1:合并到线索标题
修改$queryData中的TITLE字段,将页面标题拼接进去:
"TITLE": "'.$title.' - 来自页面:'.$page_title.'"
方式2:添加到备注字段
如果Bitrix线索支持备注字段,可直接新增该字段:
"COMMENTS": "表单提交页面:'.$page_title.'"
修改后的完整代码
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; $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']; // 获取表单所在页面的标题 $container_post_id = $submission->get_meta('container_post_id'); $page_title = $container_post_id ? get_the_title($container_post_id) : '未知页面'; $queryUrl = 'https://****.bitrix24.eu/***/crm.lead.add'; // 合并页面标题到线索标题,并添加备注字段 $queryData = '{"fields":{"TITLE": "'.$title.' - 来自页面:'.$page_title.'","NAME": "'.$firstName.'", "STATUS_ID": "NEW", "OPENED": "Y", "PHONE": [ { "VALUE": "'.$yourPhone.'", "VALUE_TYPE": "WORK" } ],"EMAIL": [ { "VALUE": "'.$yourEmail.'", "VALUE_TYPE": "WORK" } ],"SOURCE_ID": "WEB", "COMMENTS": "提交页面:'.$page_title.'"},"params": { "REGISTER_SONET_EVENT": "Y" }}'; if($yourEmail == null || $yourEmail == ''){ $queryData = '{"fields":{"TITLE": "'.$title.' - 来自页面:'.$page_title.'","NAME": "'.$firstName.'", "STATUS_ID": "NEW", "OPENED": "Y", "PHONE": [ { "VALUE": "'.$yourPhone.'", "VALUE_TYPE": "WORK" } ],"SOURCE_ID": "WEB", "COMMENTS": "提交页面:'.$page_title.'"},"params": { "REGISTER_SONET_EVENT": "Y" }}'; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $queryUrl, // 复用变量避免重复写死链接 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); $result = json_decode($response, 1); if (array_key_exists('error', $result)) echo "保存线索错误:" .$result['error_description'] ."<br/>"; }
注意事项
- 若要将页面标题存入Bitrix自定义字段,需替换对应字段名(如
UF_PAGE_TITLE),确保该字段已在Bitrix CRM中创建并启用。 get_meta('container_post_id')兼容单页、文章、自定义文章类型等所有页面场景。
内容的提问来源于stack exchange,提问作者dintro
相关产品推荐
相关产品推荐

