гравитационная форма создать сообщение после добавления записи через веб-API

мы разрабатываем мобильное приложение для веб-сайта, который имеет гравитационную форму, и мы можем сделать вход через веб-интерфейс формы гравитации, но на веб-сайте при отправке формы автоматически создается новое сообщение, потому что в форме есть несколько полей для публикации, а когда мы добавляем новую запись через веб-интерфейс, она просто добавляет запись, а не публикацию.
Как мы можем определить, что эта запись должна быть сохранена для публикации через веб-API гравитационных форм?

Обновить:

Гравитационная форма может создавать сообщения через формы, если эта форма имеет поля сообщений. прочитайте больше

и эта функция предназначена только для отправки формы, поэтому вы не можете получить к ней доступ через веб-интерфейс 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");

0

Решение

$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");
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector