Я часами искал решение, но ничего не получалось, я пробовал все рекомендуемые решения, например. http://daddyanalytics.com/integrating-contact-form-7-and-salesforce/ и http://www.alexhager.at/how-to-integrate-salesforce-in-contact-form-7/
Я решил проблему:)
Я также попробовал плагин https://wordpress.org/plugins/forms-3rdparty-integration/
Но ничего не получилось, тогда во время поиска кто-то выложил решение с перехватом wpcf7_mail_components. Когда я использовал код, код действительно работал, благодаря этому парню. Я не помню ссылку сейчас. Но моей целью было сделать wpcf7_before_send_mail вызываемым и доступным. Как никогда не называлось вышеупомянутыми рекомендациями.
Затем я ввел два последних параметра, т.е.
add_action('wpcf7_before_send_mail', 'my_conversion', 10, 1); //this will call the hook
add_action('wpcf7_before_send_mail', 'my_conversion'); //not calling the hook for me
add_action('wpcf7_before_send_mail', 'my_conversion', 10); //also not calling the hook for me
Пожалуйста, понравится, если это решит вашу проблему.
Итак, вот полное решение:
add_action('wpcf7_before_send_mail', 'my_conversion', 10, 1);
function my_conversion($cf7) {
$email = $cf7->posted_data["email"];
$name = $cf7->posted_data["name"];
$phone = $cf7->posted_data["phone"];
$business_type = $cf7->posted_data["business-type"];
$no_stations = $cf7->posted_data["number-of-stations"];
$lead_source = $cf7->title;
$post_items[] = 'oid=<YOUR-SALES-FORCE-ID>';
$post_items[] = 'name=' . $name;
$post_items[] = 'email=' . $email;
$post_items[] = 'phone=' . $phone;
$post_items[] = 'business_type=' . $business_type;
$post_items[] = 'no_of_stations=' . $no_stations;
$post_items[] = 'lead_source=' . $lead_source;
if (!empty($name) && !empty($phone) && !empty($email)) {
$post_string = implode('&', $post_items);
// Create a new cURL resource
$ch = curl_init();
if (curl_error($ch) != "") {
// error handling
}
$con_url = 'https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8';
curl_setopt($ch, CURLOPT_URL, $con_url);
// Set the method to POST
curl_setopt($ch, CURLOPT_POST, 1);
// Pass POST data
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_exec($ch); // Post to Salesforce
curl_close($ch); // close cURL resource
}
}