前提・実現したいこと
contactform7で作成したフォームとsalesforceを連携させたい
(参考url)
https://qiita.com/emegane/items/957c5db4e41d11454430
発生している問題・エラーメッセージ
function.php、contactform7に必要だと思われる処理をいれてもsalesforceに反映されません。
反映されない原因の一つとしてformactionの部分がsalesforceに送られるように変更されていないように見えます。
ソースコードで見たところ、下のようになっていました。
<form action="/サイトurl/%e9%8a%80%e5%ba%a7labo#wpcf7-f918-o1" method="post" class="wpcf7-form" novalidate="novalidate">``` function.phpにいれた内容はこのような感じです。 <?php function sf_web_to_lead($cf7) { // 送信されるデータを取得します。 $submission = WPCF7_Submission::get_instance(); // POSTするクエリを用意します。 $query_data = array(); foreach ($posted_data as $name => $value) { // Contact form 7用のパラメータはスキップします。 if (0 === strpos($name, '_wpcf7')) { continue; } // sf-からはじまるパラメータは、先頭のPrefixを削除します。 if (0 === strpos($name, 'sf-')) { $name = substr($name, 3); } // 複数選択可能なフィールド(select[multiple]やcheckboxなど)の場合は、 // hoge=value1&hoge=value2のように送信します。(Salesforceの仕様) if (is_array($value)) { foreach ($value as $option_value) { $query_data[] = sprintf('%s=%s', $name, $option_value); } } else { $query_data[] = sprintf('%s=%s', $name, $value); } } $query = implode('&', $query_data); // Init cURL session $ch = curl_init(); if ('' !== curl_error($ch)) { // Error handling } else { $sf_url = 'https://webto.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8'; curl_setopt($ch, CURLOPT_URL, $sf_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $query); curl_exec($ch); curl_close($ch); } return $cf7; } add_action('wpcf7_before_send_mail', 'sf_web_to_lead'); ?>
あなたの回答
tips
プレビュー