Wordpress WpForm 自定义提交按钮以调用外部 API (Json)

Ah *_*ang 2 php wordpress custom-wordpress-pages wordpress-rest-api

我想更改提交按钮以能够触发 ajax 或任何可以将 POST 请求发送到另一台服务器的东西(因为我想在另一台服务器中管理从 wordpress 提交的所有数据)。Wordpress 只是带有 webform 的简单 UI 页面,用于创建记录并发送到另一台服务器。我对 PHP 一无所知。我如何设法修改代码以实现它?不要担心 CORS 问题,因为我可以处理

Alw*_*ing 5

这就是你所需要的。

在您的主题 functions.php 文件中,您需要添加此 WPForms 操作,这将在您完成并提交表单时触发。

add_action( 'wpforms_process_complete', 'sendingDataToJava', 10, 4 );

   function sendingDataToJava( $fields, $entry, $form_data, $entry_id) {

    //Specify WPForm ID you have there

    //if form ID is 1
    if (form_data[id] == 1) {

      $api_url = 'http://some java end point.com';
      $body = array(
        'name'                => $fields['1']['value'],
        'email'               => $fields['2']['value'],
        'phone'               => $fields['3']['value'],

       );
       $request = wp_remote_post( $api_url, array( 'body' => $body ) );

     }
}
Run Code Online (Sandbox Code Playgroud)

您将不得不在您使用的表单中看到 $fields id,并相应地更改上面的内容。您还需要检查如何获取 Java 端点文件中的数据。

其它的办法

另一种方式是通过在您的functions.php中添加此操作来进行ajax请求

add_action( 'wp_ajax_foobar', 'sendingDataToJava' );
add_action( 'wp_ajax_nopriv_foobar', 'sendingDataToJava' );
function sendingDataToJava() {
    // do something

    // avoids extra 0 at the end of the response
    die(); /
}
Run Code Online (Sandbox Code Playgroud)

在您的主题 JS 文件中添加此代码

jQuery(document).ready(function($) {

   $('#form_button_id').click( function() {

      //
      var data = {
         name: $('#field_1').val(),
         email: $('#field_2').val(),
         phone: $('#field_3').val()
      };

      var ajaxurl = 'http://some java end point.com';
      jQuery.post(ajaxurl, data, function(response) {
         alert('Data Sent to Sent +' response);
      }
      );
   }
   );
}
);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此 WPForm 操作:https ://wpforms.com/developers/wpforms_process_complete/

希望这可以帮助