По нажатию на кнопку данные передаются Ajax-ом в endpoint POST запросом. Данные в виде массива json. Т.е. [{data:1}{type:1},{data:2}{type:2}]
В endpoint-е вот такой код:
public function api_save_callback( WP_REST_Request $request ) {
if ( !isset( $request )) {
$response = new WP_REST_Response( 'Where is params', 400 );
return $response;
}
echo (var_dump($request));
$response = new WP_REST_Response( 'Ok', 200 );
return $response;
}
Как в коде обращаться к элементам?
P.S Вот образец POST данных
[{"post-id":"1512709186613861455_196691920","post-url":"some_url","post-author":"testing","post-date":"Wed Sep 24 2064 17:47:09 GMT+1000","pic-url":"some_url","post-text":"Sea"},{"post-id":"1512696819280595861_196691920","post-url":"some_url","post-author":"testing","post-date":"Thu Feb 04 2112 17:52:34 GMT+1000","pic-url":"some_url","post-text":"#sea"}]
Декодирование json в WordPress выполняется так:
$array = json_decode( $request, true );
Второй параметр true если нужен ассоциативный массив.
В исходном коде класса WP_REST_Request (файл wp-includes/rest-api/class-wp-rest-request.php) есть функция get_body(). Судя по её коду, она должна возвращать строку запроса:
$body = $request->get_body();
Таким образом, полный код для получения данных выглядит так:
$body = $request->get_body();
$data_array = json_decode( $body, true );
$data = json_decode( $request->get_body(), true );
Далее к элементам можно обращаться в цикле foreach($data as $item){echo $item['some_index']};
Сборка персонального компьютера от Artline: умный выбор для современных пользователей