heretic_man
@heretic_man

Модификация ответов в rest api woocommerce?

При рест запросе /wc/v3/products выкидывает огромный json файл с ненужными полями.

Как сделать, чтобы некоторые поля отсутствовали в ответе от сервера? Через functions.php или может в самом запросе нужно что-то прописывать?

Что-то типа этого прилетает:
1*AgDkQLVcZg8bMwsa5dcyww.png

А хочется вроде этого:
1*02ten7KnGoXcaLw9DKa2hg.png
  • Вопрос задан
  • 309 просмотров
Решения вопроса 1
heretic_man
@heretic_man Автор вопроса
в functions.php
add_filter( 'woocommerce_rest_prepare_product_object', 'filter_function_name', 10, 3 );
function filter_function_name( $response, $object, $request ){
    if( empty( $response->data ) )
        return $response;

    $inclde = [
        'id'        => $response->data['id'],
        'name'      => $response->data['name'],
        'images'    => $response->data['images'],
        'price'     => $response->data['price'],
        'meta_data' => $response->data['meta_data'],
        'categories'=> $response->data['categories']
    ];

    return $inclde;
}


WooCommerce имеет эти подготовительные фильтры для большинства своих ответов API. Обратите внимание, что их формат-woocommerce_rest_prepare_{$type}, где $type - это тип записи или имя таксономии (например, product_cat). В WooCommerce 2.7 некоторые из этих фильтров также имеют суффикс _object.

Можно сделать адаптивными rest запросы, с помощью третьего параметра ($request) в функции и производить манипуляции с ответом ($response).

Спасибо Alex за наводку!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Kozack
@Kozack
Thinking about a11y
Как вариант, попробуйте rest_prepare_{$this->post_type}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы