联系表格7发送后,需要提交另一份隐藏表格

时间:2018-06-24 04:05:59

标签: wordpress

我有一个由联系表单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不断旋转。谁能帮我怎么做。

1 个答案:

答案 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);
});