Как работать с POST данными на endpoint-е?

322
17 мая 2017, 08:20

По нажатию на кнопку данные передаются 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"}]
Answer 1

Декодирование 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 );
Answer 2
$data = json_decode( $request->get_body(), true );

Далее к элементам можно обращаться в цикле foreach($data as $item){echo $item['some_index']};

READ ALSO
Проверка свойства класса

Проверка свойства класса

Есть класс, с неким установленным свойствомНапример

316
Bootstrap tabs внутри slick slider

Bootstrap tabs внутри slick slider

У меня есть такой макет

643
Проверить input value и присвоить class

Проверить input value и присвоить class

Уважаемые знатоки, подскажите пожалуйста элементарщину:

427
Лучший способ инжекта скрипта в Chrome Extension

Лучший способ инжекта скрипта в Chrome Extension

Задача: из background-скрипта получить код в текстовом представлении и добавить его в окно браузера как можно быстрее и в то же время чтобы это...

385