Przejdź do treści

WooCommerce 11.3: własne pola produktu dla asystentów AI

WooCommerce 11.3 pozwala rozszerzeniom dodawać pola, filtry i walidację do danych produktu udostępnianych przez MCP. Zobacz, jak działa eksperymentalne API i jakie ma ograniczenia.

WooCommerce 11.3: własne pola produktu dla asystentów AI

Tak. WooCommerce 11.3 wprowadza eksperymentalne API, dzięki któremu rozszerzenie może dodać własne pola do istniejących możliwości WooCommerce, takich jak odczyt i aktualizacja produktów. Asystent korzystający z MCP może wtedy pobrać dodatkową informację, na przykład cenę pakowania na prezent, razem z danymi produktu. Rozszerzenie może też zdefiniować filtr do wyszukiwania po tym polu i walidator blokujący nieprawidłowe zmiany. Wpis deweloperski WooCommerce z 22 października 2026 r. opisuje funkcję jako eksperymentalną i przeznaczoną do testów.

W skrócie

  • Pola są zwracane w strukturze extensions.<namespace>.<field>, a ich schemat jest częścią wyniku możliwości.
  • Rozszerzenia mogą dodawać pola do odczytu produktów, zamówień i pozycji zamówień. W przypadku tworzenia i aktualizacji produktów te same pola mogą być również przekazywane jako dane wejściowe.
  • Funkcja jest domyślnie wyłączona. WooCommerce prosi, by nie używać jej jeszcze w środowisku produkcyjnym.

Co zmienia WooCommerce 11.3 dla pól rozszerzeń

Wcześniej wtyczka, która chciała pokazać asystentowi kilka własnych danych produktu, musiała często tworzyć osobną możliwość produktu. Nowy mechanizm pozwala dopiąć dodatkowe dane do istniejących operacji. Klient AI może użyć znanej mu możliwości, a każde rozszerzenie przechowuje własne pola we własnej przestrzeni nazw, czyli namespace.

Dokumentacja integracji MCP wyjaśnia, że WooCommerce udostępnia możliwości przez WordPress Abilities API, a do połączenia z klientem MCP potrzebny jest osobny wtyczkowy MCP Adapter. Integracja MCP jest oznaczona jako podgląd deweloperski, więc jej szczegóły mogą się zmieniać. Komunikat o zmianach MCP w WooCommerce 11.3 wskazuje WordPressa 7.0 jako minimalną wersję, a dokumentacja MCP WooCommerce zaleca HTTPS i dedykowane konto z niezbędnymi uprawnieniami do zdalnego połączenia.

Element APIZastosowaniePrzykład dla produktu
Pole (register_field)Odczyt i zapis wartości rozszerzeniaCena pakowania na prezent
Filtr (register_query_filter)Ograniczenie wyników wyszukiwaniaTylko produkty dostępne do pakowania
Walidator (register_validator)Odrzucenie niedozwolonej zmiany przed zapisemBrak pakowania dla produktu wirtualnego

Jak dodać pole do produktu

Przykład WooCommerce dotyczy dodatku do pakowania na prezent. Wartość jest zapisana w metadanych produktu pod kluczem _giftwrap_price, a API udostępnia ją jako giftwrap.price. Ważne jest rozdzielenie tych nazw: namespace opisuje rozszerzenie, field nazywa pole widoczne dla klienta, a get_callback i update_callback łączą API z właściwym sposobem przechowywania danych.

Na środowisku testowym utwórz plik wp-content/plugins/woocommerce-extensible-abilities-test/woocommerce-extensible-abilities-test.php i wklej do niego cały kod poniżej. WordPress rozpoznaje wtyczkę po nagłówku w pliku PHP i wyświetla ją na stronie Wtyczki. Aktywuj ją w panelu, a następnie włącz funkcję w WooCommerce > Settings > Advanced > Features, w sekcji eksperymentalnej. Podczas ładowania aktywnej wtyczki rejestrowany jest callback, który dodaje pole, gdy WooCommerce uruchamia hook woocommerce_extensible_abilities_init. Podstawy tworzenia wtyczki WordPress opisują strukturę pliku i aktywację.

<?php
/**
 * Plugin Name: WooCommerce Extensible Abilities Test
 * Description: Testowe pole produktu dla WooCommerce Extensible Abilities.
 * Version: 1.0.0
 */

use Automattic\WooCommerce\Abilities\ExtensibleAbilities;

add_action(
    'woocommerce_extensible_abilities_init',
    function () {
        ExtensibleAbilities::register_field(
            array(
                'resource'  => 'product',
                'namespace' => 'giftwrap',
                'field'     => 'price',
                'schema'    => array(
                    'type'        => array( 'number', 'null' ),
                    'minimum'     => 0,
                    'title'       => 'Gift wrap price',
                    'description' => 'Price of gift wrapping. Null when the product cannot be gift wrapped.',
                ),
                'get_callback' => function ( WC_Product $product ) {
                    $price = $product->get_meta( '_giftwrap_price' );
                    return '' === $price ? null : (float) $price;
                },
                'update_callback' => function ( WC_Product $product, $value ) {
                    if ( null === $value ) {
                        $product->delete_meta_data( '_giftwrap_price' );
                        return;
                    }
                    $product->update_meta_data( '_giftwrap_price', $value );
                },
            )
        );
    }
);

W tym schemacie null oznacza brak ustawionej ceny, a wartość liczbowa musi wynosić co najmniej zero. Przy odczycie wynik może wyglądać tak:

{
  "products": [
    {
      "id": 42,
      "name": "Coffee Box",
      "extensions": {
        "giftwrap": { "price": 4.5 }
      }
    }
  ]
}

To przykład kształtu odpowiedzi z wpisu WooCommerce, nie gwarancja, że każdy asystent pokaże pole klientowi w ten sam sposób. Asystent musi korzystać z połączenia MCP i umieć odczytać dane zwrócone przez daną możliwość.

Dodaj filtr i regułę walidacji

Samo pole opisuje daną, ale nie definiuje, jak wyszukiwać produkty ani kiedy odmówić zapisu. API pozwala rozszerzeniu zarejestrować filtr i walidator w tym samym hooku. W przykładzie WooCommerce filtr giftwrap.available przyjmuje wartość logiczną i przekłada ją na meta_query, a walidator odrzuca cenę pakowania, jeśli produkt jest wirtualny.

W pliku wtyczki wstaw poniższy kod wewnątrz funkcji przekazanej do add_action, bezpośrednio po bloku ExtensibleAbilities::register_field(...) i przed zamykającą klamrą tej funkcji. W pokazanym wyżej pliku pole kończy się linią ); zamykającą wywołanie register_field.

ExtensibleAbilities::register_query_filter(
    array(
        'resource'  => 'product',
        'namespace' => 'giftwrap',
        'filter'    => 'available',
        'schema'    => array(
            'type'        => 'boolean',
            'description' => 'True lists products that can be gift wrapped. False lists the others.',
        ),
        'callback'  => function ( bool $available ) {
            return array(
                'meta_query' => array(
                    array(
                        'key'     => '_giftwrap_price',
                        'compare' => $available ? 'EXISTS' : 'NOT EXISTS',
                    ),
                ),
            );
        },
    )
);

ExtensibleAbilities::register_validator(
    array(
        'resource'  => 'product',
        'namespace' => 'giftwrap',
        'callback'  => function ( WC_Product $product ) {
            if ( $product->is_virtual() && '' !== $product->get_meta( '_giftwrap_price' ) ) {
                return new WP_Error( 'giftwrap_virtual_product', 'A virtual product cannot be gift wrapped. Remove the gift wrap price first.' );
            }
            return null;
        },
    )
);

Klient może przekazać filtr w zagnieżdżonej strukturze filters.extensions, na przykład:

{
  "filters": {
    "extensions": {
      "giftwrap": { "available": true }
    }
  }
}

Walidator sprawdza zmieniony produkt przed zapisem. Jeśli zwróci WP_Error, WooCommerce nie zapisuje zmian i przekazuje klientowi błąd. Pełny przykład rejestracji pola, filtra i walidatora w dokumentacji WooCommerce pokazuje implementację tych trzech elementów.

Kolejność wdrożenia i testów

  1. Przygotuj środowisko testowe. Korzystaj z wersji WooCommerce 11.3 i WordPressa 7.0 lub nowszego. Nowe API jest eksperymentalne; nie przenoś go od razu na sklep produkcyjny.
  2. Włącz funkcję eksperymentalną. W panelu przejdź do WooCommerce > Settings > Advanced > Features i w sekcji eksperymentalnej włącz Extensible abilities. Przy wyłączonej funkcji opisane hooki nie są uruchamiane, a możliwości działają jak w WooCommerce 11.2.
  3. Zarejestruj pole i jego schemat. Określ typ danych, dopuszczalne wartości, nazwę przestrzeni i sposób odczytu oraz zapisu.
  4. Dodaj filtr lub walidator, jeśli są potrzebne. Filtr ma przekładać parametr klienta na zapytanie, a walidator ma zwracać błąd dla niedozwolonego stanu.
  5. Sprawdź odczyt i zapis przez klienta MCP. WooCommerce 11.3 używa MCP Adaptera do udostępniania możliwości klientom MCP. Samo zarejestrowanie pola nie oznacza, że każdy asystent automatycznie je wykorzysta.
flowchart TD
    A[Klient MCP] --> B[Możliwość WooCommerce]
    B --> C[Pole rozszerzenia]
    C --> D[Odczyt metadanych produktu]
    B --> E[Filtr zapytania]
    B --> F[Walidator]
    F --> G[Zapis produktu]

Ograniczenia, które warto uwzględnić

Wersja opisana przez WooCommerce ma istotne luki. Pola zamówień można odczytywać i używać w filtrach, ale podstawowe możliwości WooCommerce nie zapisują jeszcze pól zamówień. Typy produktów dodawane przez rozszerzenia, na przykład subskrypcje, nie znajdują się na stałej liście typów obsługiwanych przez możliwości produktów. Przy produktach wariantowych tworzenie i aktualizacja wykonują obecnie jeden zapis, chociaż obsługa produktu zmiennego może wymagać osobnego zapisu produktu nadrzędnego i wariantów.

Dlatego przed rozpoczęciem prac sprawdź, czy Twoje pole dotyczy produktu prostego, wariantu, zamówienia czy własnego typu produktu. Szczegóły na temat starego endpointu MCP i migracji po aktualizacji opisuje artykuł WooCommerce 11.3: co zmieni się w połączeniach MCP.

Czy to znaczy, że każdy asystent AI przeczyta własne pola?

Nie automatycznie. Rozszerzenie dodaje pole do możliwości WooCommerce udostępnianej przez API. Klient musi mieć dostęp do tych możliwości przez MCP i obsługiwać ich schemat. Jeśli katalog przygotowujesz dla asystenta zakupowego, sprawdź również, czy jego integracja wykorzystuje te konkretne pola. Pomocny będzie poradnik jak przygotować produkty WooCommerce dla asystenta AI.

FAQ

Czy API pól rozszerzeń jest włączone domyślnie?

Nie. Funkcja jest domyślnie wyłączona. Można ją włączyć w WooCommerce > Settings > Advanced > Features, w sekcji eksperymentalnej.

Jak asystent odczyta własne pole produktu?

Wartość trafia do wyniku możliwości w extensions.<namespace>.<field>. Na przykład cena pakowania może pojawić się jako extensions.giftwrap.price.

Czy asystent może zmieniać własne pole produktu?

Możliwości woocommerce/product-create i woocommerce/product-update przyjmują obiekt extensions jako dane wejściowe. WooCommerce zapisuje zmiany produktu oraz pola rozszerzenia w jednym zapisie.

Czy można odmówić zapisu nieprawidłowej wartości?

Tak. Walidator może sprawdzić zmieniony produkt przed zapisem. Gdy zwróci WP_Error, zmiany nie zostaną zapisane, a klient otrzyma błąd.

Czy można już wdrożyć to na sklepie produkcyjnym?

WooCommerce opisuje API jako eksperymentalne i prosi, by nie używać go w produkcji, dopóki projekt i API są zmieniane.

Co dalej

Jeśli rozwijasz integrację MCP, przeczytaj przewodnik o połączeniach MCP w WooCommerce 11.3. Właściciel sklepu może też sprawdzić, jak Sklepowy pomaga klientom korzystać z katalogu WooCommerce. Jeśli chcesz ustalić, czy asystent może korzystać z konkretnego pola, napisz do zespołu.

Asystent zakupowy AI dla Twojego sklepu WooCommerce

Klient pyta w oknie czatu, asystent odpowiada z Twojego katalogu. Plan darmowy nie wymaga karty.