我有一个由联系表单7构成的表单。成功发送了表单数据之后,我需要向外部CRM提交另一个隐藏的表单。我的代码在下面
add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' );
function your_wpcf7_mail_sent_function( $contact_form ) {
$title = $contact_form->id;
$submission = WPCF7_Submission::get_instance();
if ( $submission ) {
$posted_data = $submission->get_posted_data();
}
if ( 12 == $title ) {
$firstname = $posted_data['firstname'];
echo '<form name="bntWebForm" id="bntWebForm" method="post"action="https://www.bntouchmortgage.net/account5/webform/" style="display:none;">
<input class="form-control" type="text" name="name_1" value="'.$firstname.'" />
<input type="submit" value="Submit">
</form> ';
?>
<script>document.getElementById("bntWebForm").submit();</script>
<?php
}
}
但是,每当我运行代码时,它就无法正常工作,并且加载的ajax不断旋转。谁能帮我怎么做。
答案 0 :(得分:0)
我认为您的方法基本上是错误的。
wpcf7_mail_sent
操作发生在服务器端,不能用于将DOM元素添加到页面。您尝试与javascript代码一起回显的表单将永远不会添加到页面中,并且不会在您期望的客户端环境上运行。
要将带有数据的帖子发送到所需的外部端点,您仍然可以使用wpcf7_mail_sent
钩子并使用PHP curl函数发送HTTP帖子请求。
可以在下面找到一个示例:
add_action('wpcf7_mail_sent', function() {
$endpoint_url = 'https://www.bntouchmortgage.net/account5/webform/';
$data_to_post = ['name_1' => $firstname];
// Sets our options array so we can assign them all at once
$options = [
CURLOPT_URL => $endpoint_url,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data_to_post,
];
$curl = curl_init();
curl_setopt_array($curl, $options);
// Executes the cURL POST
$results = curl_exec($curl);
curl_close($curl);
});