Today Automate logo
Dokumentacja z przykładami kodu

WooCommerce REST API – Kompletny Przewodnik

Gotowe przykłady w Python, PHP i JavaScript. Zamówienia, produkty, batch update, webhooks – kopiuj i uruchamiaj.

Basic AuthREST JSONBatch updateWebhooks

Base URL

{siteUrl}/wp-json/wc/v3

Autoryzacja

Basic Auth (consumer_key:secret)

Batch limit

100 rekordów / żądanie

Czym jest WooCommerce REST API?

WooCommerce to najpopularniejsza platforma e-commerce dla WordPressa, napędzająca miliony sklepów na całym świecie. REST API wbudowane w WooCommerce od wersji 2.6 daje pełny programowy dostęp do zamówień, produktów, klientów, kuponów i raportów.

Zamówienia

Pobieranie, filtrowanie, zmiana statusów, notatki do zamówień.

Produkty i warianty

CRUD produktów, zarządzanie wariantami, galerie, atrybuty.

Klienci

Dane klientów, historia zamówień, zarządzanie segmentami.

Kupony i raporty

Zarządzanie kodami promocyjnymi, raporty sprzedażowe.

1. Konfiguracja klienta API

WooCommerce API używa HTTP Basic Auth. Consumer Key i Consumer Secret generujesz w panelu WordPress: WooCommerce → Ustawienia → Zaawansowane → REST API.

import requests
from requests.auth import HTTPBasicAuth

# Klucze z: WooCommerce → Ustawienia → Zaawansowane → REST API
SITE_URL        = "https://twojsklep.pl"
CONSUMER_KEY    = "ck_TWOJ_CONSUMER_KEY"
CONSUMER_SECRET = "cs_TWOJ_CONSUMER_SECRET"

BASE_URL = f"{SITE_URL}/wp-json/wc/v3"
auth     = HTTPBasicAuth(CONSUMER_KEY, CONSUMER_SECRET)

def wc_get(endpoint: str, params: dict = None) -> dict:
    resp = requests.get(f"{BASE_URL}{endpoint}", auth=auth, params=params or {})
    resp.raise_for_status()
    return resp.json()

def wc_post(endpoint: str, data: dict) -> dict:
    resp = requests.post(f"{BASE_URL}{endpoint}", auth=auth, json=data)
    resp.raise_for_status()
    return resp.json()

def wc_put(endpoint: str, data: dict) -> dict:
    resp = requests.put(f"{BASE_URL}{endpoint}", auth=auth, json=data)
    resp.raise_for_status()
    return resp.json()

print("WooCommerce API gotowe")

2. Pobieranie zamówień z paginacją

WooCommerce API zwraca domyślnie 10 wyników na stronę. Ustaw per_page=100 i iteruj po stronach za pomocą parametru page.

# Pobierz zamówienia z ostatnich 7 dni
from datetime import datetime, timedelta

date_from = (datetime.utcnow() - timedelta(days=7)).strftime("%Y-%m-%dT%H:%M:%S")

# Pobierz wszystkie zamówienia z paginacją
wszystkie = []
strona    = 1
per_page  = 100

while True:
    zamowienia = wc_get("/orders", {
        "after":    date_from,
        "status":   "any",       # all, pending, processing, completed, etc.
        "per_page": per_page,
        "page":     strona,
    })
    if not zamowienia:
        break

    wszystkie.extend(zamowienia)
    print(f"Strona {strona}: {len(zamowienia)} zamówień")

    if len(zamowienia) < per_page:
        break
    strona += 1

print(f"Łącznie: {len(wszystkie)} zamówień")
for zam in wszystkie[:3]:
    print(
        "#" + str(zam["id"]) + " | " +
        zam.get("billing", {}).get("first_name", "") + " " +
        zam.get("billing", {}).get("last_name", "") + " | " +
        str(zam["total"]) + " " + zam["currency"] + " | " + zam["status"]
    )

3. Produkty – batch update

Endpoint /products/batch pozwala zaktualizować, stworzyć lub usunąć do 100 produktów w jednym zapytaniu – kluczowa funkcja przy synchronizacji z hurtownią.

# Aktualizacja stanu i ceny produktu (wariant)
def aktualizuj_stan_i_cene(product_id: int, stock: int, cena: str) -> dict:
    return wc_put(f"/products/{product_id}", {
        "stock_quantity":  stock,
        "manage_stock":    True,
        "regular_price":   cena,
    })

# Masowa aktualizacja przez batch endpoint (do 100 produktów naraz)
def batch_aktualizacja(produkty: list) -> dict:
    """
    produkty = [{"id": 123, "regular_price": "49.99", "stock_quantity": 15}, ...]
    """
    return wc_post("/products/batch", {"update": produkty})

# Przykład: aktualizuj 3 produkty
wynik = batch_aktualizacja([
    {"id": 101, "regular_price": "29.99", "stock_quantity": 50},
    {"id": 102, "regular_price": "49.99", "stock_quantity": 0},
    {"id": 103, "sale_price":    "19.99", "stock_quantity": 30},
])
print(f"Zaktualizowano: {len(wynik['update'])} produktów")

Potrzebujesz integracji WooCommerce na zamówienie?

Budujemy integracje WooCommerce z ERP, BaseLinker, hurtowniami i systemami BI. Automatyzujemy import produktów, synchronizację stanów i przetwarzanie zamówień.

FAQ

Gdzie znaleźć Consumer Key i Consumer Secret WooCommerce?
W panelu WordPress: WooCommerce → Ustawienia → Zaawansowane → REST API → Dodaj klucz. Wybierz użytkownika, uprawnienia (Odczyt/Zapis/Odczyt i zapis) i wygeneruj klucze.
Jakie są limity WooCommerce REST API?
WooCommerce nie narzuca własnego rate limitingu – ograniczenia zależą od hostingu i konfiguracji WordPressa. Endpoint batch (/products/batch, /orders/batch) przyjmuje do 100 rekordów na żądanie.
Jak skonfigurować webhooks WooCommerce?
WooCommerce → Ustawienia → Zaawansowane → Webhooks → Dodaj webhook. Ustaw URL odbiorcy, zdarzenie (np. order.created) i klucz sekretny do weryfikacji podpisu HMAC-SHA256.
Czy WooCommerce API obsługuje warianty produktów?
Tak. Warianty to osobny endpoint: /products/{product_id}/variations. Każdy wariant ma własne id, ceny i stan magazynowy. Batch update jest też dostępny dla wariantów.
Dotted

Skontaktuj się z nami

Wyrażam zgodę na przetwarzanie danych oraz akceptuję Politykę Prywatności

Kontakt

Numer telefonu

+48 697 322 226