通过网络添加条目后创建重力表单 post api

gravity form create post after add entry via web api

我们为具有引力表单的网站开发移动应用程序,我们可以通过引力表单的 web api 进行输入,但是在提交表单时网站会自动创建新的 post 因为表单有一些 post 字段,当我们通过网络添加新条目时 api 它只是添加条目而不是 post。 我们如何定义此条目必须通过重力形式 web api 保存到 post?

更新:

重力表单可以通过它的表单创建 post 如果该表单有 post 字段。 read more

此功能仅用于提交表单,因此您无法通过网络访问它 api。

为此您必须手动添加它

必须放在themes/YOUR_THEME/functions.php处的完整示例:

$api_key = 'your_public_key';
  $private_key = 'your_private_key';

  //set route
  $route = 'entries'; // or 'forms/{formID}/entries'

  //creating request URL
  $expires = strtotime( '+1 day' );
  $string_to_sign = sprintf( '%s:%s:%s:%s', $api_key, 'POST', $route, $expires );
  $sig = calculate_signature( $string_to_sign, $private_key );
  $url = 'http://your_domain.com/gravityformsapi/' . $route . '?api_key=' . $api_key . '&signature=' . $sig . '&expires=' . $expires;

if(isset($_POST)){
  $body = [
    [
      "form_id"=> "1", // if $route is just 'entries'
      '1' => "Post Title" ,
      '2'  => "Post Content"

    ]
    //,[ another entry ]
  ];

  $response = wp_remote_post($url,['body'=>json_encode($body)]);
if ( is_wp_error( $response ) ) {
   wp_send_json_error($response->get_error_message());
} else {
   $body = json_decode($response['body'],true);
   if($body['status'] === 201){
   foreach($body['response'] as $entry_id){ //get each entry ID
      $entry = GFAPI::get_entry( $entry_id );
      if(!is_wp_error($entry)){
         $form = GFAPI::get_form( rgar($entry,'form_id') );
         if($form)
           GFCommon::create_post( $form, $entry); //Finally add Post.
         else
           wp_send_json_error("can not find entry form.");
      }else
         wp_send_json_error($entry->get_error_message());
   }
   wp_send_json_success("Success!");
   }else{
     wp_send_json_error($body);
   }
}

}else
   wp_send_json_error("request body invalid");
$api_key = 'your_public_key';
  $private_key = 'your_private_key';

  //set route
  $route = 'entries'; // or 'forms/{formID}/entries'

  //creating request URL
  $expires = strtotime( '+1 day' );
  $string_to_sign = sprintf( '%s:%s:%s:%s', $api_key, 'POST', $route, $expires );
  $sig = calculate_signature( $string_to_sign, $private_key );
  $url = 'http://your_domain.com/gravityformsapi/' . $route . '?api_key=' . $api_key . '&signature=' . $sig . '&expires=' . $expires;

if(isset($_POST)){
  $body = [
    [
      "form_id"=> "1", // if $route is just 'entries'
      '1' => "Post Title" ,
      '2'  => "Post Content"

    ]
    //,[ another entry ]
  ];

  $response = wp_remote_post($url,['body'=>json_encode($body)]);
if ( is_wp_error( $response ) ) {
   wp_send_json_error($response->get_error_message());
} else {
   $body = json_decode($response['body'],true);
   if($body['status'] === 201){
   foreach($body['response'] as $entry_id){ //get each entry ID
      $entry = GFAPI::get_entry( $entry_id );
      if(!is_wp_error($entry)){
         $form = GFAPI::get_form( rgar($entry,'form_id') );
         if($form)
           GFCommon::create_post( $form, $entry); //Finally add Post.
         else
           wp_send_json_error("can not find entry form.");
      }else
         wp_send_json_error($entry->get_error_message());
   }
   wp_send_json_success("Success!");
   }else{
     wp_send_json_error($body);
   }
}

}else
   wp_send_json_error("request body invalid");