WooCommerce: Jak dodać atrybut produktu do odpowiedzi GET Order REST API?
REST API WooCommerce jest potężnym narzędziem, które umożliwia integrację sklepu z aplikacjami zewnętrznymi. Jeśli chcesz, aby atrybuty produktów (np. rozmiar, kolor) pojawiały się w odpowiedzi GET dla zamówień w REST API, ten poradnik pokaże Ci, jak to zrobić krok po kroku.
Spis treści
- Dlaczego warto dodać atrybuty produktów do REST API?
- Jak działa GET Order REST API w WooCommerce?
- Dodawanie atrybutów produktów do meta_data w REST API
- Przykład kodu PHP
- Podsumowanie
Dlaczego warto dodać atrybuty produktów do REST API?
Atrybuty produktów są często kluczowe dla analizy danych lub integracji z zewnętrznymi systemami, takimi jak systemy magazynowe, CRM czy platformy raportowe. Dzięki ich dodaniu do odpowiedzi REST API możesz:
- Zautomatyzować procesy biznesowe.
- Usprawnić integracje zewnętrznych aplikacji.
- Zyskać pełniejszy obraz danych zamówień w WooCommerce.
Jak działa GET Order REST API w WooCommerce?
REST API WooCommerce pozwala pobierać informacje o zamówieniach za pomocą endpointu:
/wp-json/wc/v3/orders
Domyślnie, odpowiedź zawiera informacje o zamówieniu, takie jak ID zamówienia, dane klienta, lista produktów (line_items
) oraz ich metadane (meta_data
). Jednak atrybuty produktów nie są zawarte w tych danych. Musimy je dodać ręcznie.
Dodawanie atrybutów produktów do meta_data w REST API
Aby dodać atrybuty produktów do odpowiedzi GET Order REST API, musimy skorzystać z hooka woocommerce_rest_prepare_shop_order
. Ten hook pozwala modyfikować dane zwracane przez API.
Kroki do wykonania:
- Zidentyfikuj atrybuty, które chcesz dodać (np. rozmiar, kolor).
- Skorzystaj z funkcji WooCommerce do pobierania atrybutów produktu.
- Dodaj dane do odpowiedzi REST API w sekcji
line_items > meta_data
.
Przykład kodu PHP
Poniżej znajduje się przykład kodu, który dodaje atrybuty produktów do odpowiedzi REST API:
add_filter('woocommerce_rest_prepare_shop_order', 'add_product_attributes_to_rest_api', 10, 3);
function add_product_attributes_to_rest_api($response, $order, $request) {
$data = $response->get_data();
foreach ($data['line_items'] as &$line_item) {
$product_id = $line_item['product_id'];
$product = wc_get_product($product_id);
if ($product) {
// Pobieranie atrybutów produktu
$attributes = $product->get_attributes();
$formatted_attributes = [];
foreach ($attributes as $attribute_name => $attribute) {
$formatted_attributes[$attribute_name] = $attribute->get_options();
}
// Dodanie atrybutów do meta_data
$line_item['meta_data'][] = [
'key' => 'product_attributes',
'value' => $formatted_attributes
];
}
}
$response->set_data($data);
return $response;
}
Co robi ten kod?
- Przechwytuje odpowiedź REST API dla zamówień za pomocą hooka
woocommerce_rest_prepare_shop_order
. - Dla każdego produktu w zamówieniu pobiera jego atrybuty za pomocą funkcji
get_attributes()
. - Dodaje atrybuty do sekcji
meta_data
w odpowiedzi API.
Podsumowanie
Dzięki powyższym krokom możesz wzbogacić dane zwracane przez WooCommerce REST API o atrybuty produktów. Takie rozwiązanie jest szczególnie przydatne, jeśli integrujesz swój sklep z zewnętrznymi aplikacjami, które wymagają bardziej szczegółowych informacji o zamówieniach.
Jeśli masz jakiekolwiek pytania lub potrzebujesz pomocy w implementacji, skontaktuj się z nami w komentarzach!