提交后将联系人表单7变量推送到前端

时间:2021-09-22 作者:KiriqN

我有一个联系人表单7,它向API发送信息。我想在前端显示API响应。

我记录用户信息,然后使用wp\\u remote\\u post和我的示例url发布它。我希望能够在前端显示API响应/$正文。我已将其设置为在调试日志中捕获它,但想知道是否有方法将其发布到我的表单所在的前端。

正常的Var Dump和print\\r不起作用,因为联系人表单7是一个Ajax函数。

add_action(\'wpcf7_mail_sent\',\'Kiri_cf7_api_sender\');

 function Kiri_cf7_api_sender ( $contact_form) {
     
    
    
     
     if ( $contact_form->title === \'Quote_form\')
     {
        $submission = WPCF7_Submission::get_instance();

        if ($submission) 
        {
            $posted_data = $submission->get_posted_data();
            
            
            $name = $posted_data["your-name"];
            $surname = $posted_data["your-name2"];
            $phone = $posted_data["tel-922"];
            
            
            //example url//
            $url = www.mytestapi.com?$name&$surname&$phone;
            
            
            
            
            $response = wp_remote_post ($url);
            $body = wp_remote_retrieve_body( $response );
            
            
            
            

             
            
            
            
                     ob_start();                     // start buffer capture

    var_dump($name);
    var_dump($surname);
    var_dump($phone);
    
    
    
    
    

    $contents = ob_get_contents();  // put the buffer into a variable
    ob_end_clean();                 // end capture
    error_log($contents); 
            
             

            
            


        }
     }
 }

1 个回复
SO网友:Aurovrata

我有一个联系人表单7,它向API发送信息。我想在前端显示API响应。

解决这类问题有两种方法,

1-使用CF7插件的消息响应挂钩,

add_filter(\'wpcf7_display_message\', \'my_response_msg\',10,2);
function my_response_msg($message, $status){
    if(\'mail_sent_ok\'==$status){
      $form = wpcf7_get_current_contact_form(); //in case you need the cf7 form object to validate....
      $message = \'Api response is: \'. $api;
    }
  return $message;
}
但是,请记住,您只能在此消息中使用文本,由于报告的CF7插件的限制,HTML标记将无法工作herehere, 正如您所了解的,该功能确实存在,但插件作者倾向于在此类问题上束手无策。

2-如果您需要更丰富的界面,那么您可以将表单提交过程重定向到另一个页面,在该页面上显示您的API响应,方法是使用与此类似的逻辑将其存储在瞬态中answer...

或者,您可以在CF7成功提交时触发的表单页面上加载自定义JavaScriptwpcf7mailsent event 然后使用AJAX请求获取存储在服务器上作为瞬态的API请求。

相关推荐

如何在Auth.php上显示类别中的ACF Coustom字段

我使用ACF为类别添加了一个coustom字段。它在存档中运行良好。php,下面是代码:<?php echo get_field(\'students_no_class\', get_queried_object() );?> 但它在author中不起作用。php,没有显示任何内容。在作者页面中,我需要在<?php if (have_posts()) : while (have_posts()) : the_post();?> 我还做了一个测试:当我删除作者时。