Vetted dla deweloperów
Na tej stronie
Cena hurtowa ma w REST API i w CSV osobne, jawnie nazwane pola, zawsze netto. Standardowe pola ceny w API są zawsze detaliczne. Vetted udostępnia 6 akcji i 7 filtrów, a szablony zakładek i e-maili nadpiszesz w motywie w katalogu woocommerce/.
REST API
Vetted dokłada pola do odpowiedzi WooCommerce REST API dla produktów (/wp-json/wc/v3/products) i wariantów (/wp-json/wc/v3/products/<id>/variations). Te same pola przyjmuje przy zapisie.
| Pole | Zawartość | Zapis |
|---|---|---|
vetted_wholesale_price | Cena hurtowa netto | liczba albo pusty ciąg |
vetted_wholesale_sale_price | Hurtowa cena promocyjna netto | liczba albo pusty ciąg |
vetted_wholesale_sale_from | Początek promocji hurtowej | RRRR-MM-DD albo pusty ciąg |
vetted_wholesale_sale_to | Koniec promocji hurtowej | RRRR-MM-DD albo pusty ciąg |
vetted_hide_price | Ukrywanie ceny: yes, no albo pusty ciąg (dziedzicz z kategorii) | inna wartość zapisze się jako pusty ciąg |
vetted_wholesale_tax | Zawsze net. Informacja dla złącza, w jakiej konwencji są kwoty. | tylko odczyt |
Wszystkie wartości wracają jako tekst. Kwoty i daty przy zapisie przechodzą przez wc_format_decimal(), więc daty podawaj z myślnikami, nie z kropkami.
curl -X PUT https://sklep.example/wp-json/wc/v3/products/123 \
-u ck_klucz:cs_sekret \
-H 'Content-Type: application/json' \
-d '{"vetted_wholesale_price":"104.88","vetted_hide_price":"no"}'Parametr vetted_missing_wholesale=1 na liście produktów zwraca tylko produkty bez ceny hurtowej. Przydaje się do raportu braków przed uruchomieniem hurtu.
curl 'https://sklep.example/wp-json/wc/v3/products?vetted_missing_wholesale=1&per_page=100' \
-u ck_klucz:cs_sekretW zapytaniach REST, w zadaniach cron i w panelu Vetted nie podmienia cen. Pola price, regular_price i sale_price zawsze zwracają cenę detaliczną, niezależnie od konta, na którym działa złącze. Cena hurtowa jest tylko w polach vetted_*.
Import i eksport CSV
Vetted dodaje pięć kolumn do importu i eksportu produktów WooCommerce. Działają też dla wariantów. Importer rozpoznaje je po nagłówku albo po identyfikatorze, więc mapowanie nie wymaga klikania. Na ekranie mapowania są w grupie „Vetted: hurt”.
| Nagłówek w eksporcie | Identyfikator | Wartości |
|---|---|---|
| Cena hurtowa netto | cena_hurtowa_netto | kwota netto |
| Hurtowa cena promocyjna netto | cena_hurtowa_promocyjna_netto | kwota netto |
| Promocja hurtowa od | promocja_hurtowa_od | RRRR-MM-DD |
| Promocja hurtowa do | promocja_hurtowa_do | RRRR-MM-DD |
| Ukryj cenę (yes/no/puste) | ukryj_cene | yes, no albo puste |
Jeśli w pliku nie ma danej kolumny, wartość w produkcie zostaje bez zmian. W kolumnie ukryj_cene każda wartość inna niż yes albo no zapisze się jako pusta, czyli „Dziedzicz z kategorii”.
W WooCommerceUstawieniaVetted, w sekcji „Wymiana danych”, jest odnośnik „Pobierz szablon CSV”. Plik szablon-produktow.csv ma polskie nagłówki importera WooCommerce, kolumny Vetted i jeden wiersz przykładowy oznaczony do skasowania. Zapisuję go z BOM, żeby Excel poprawnie czytał polskie znaki.
Akcje i filtry
Akcje
| Akcja | Kiedy |
|---|---|
vetted_application_submitted( int $user_id ) | Po zapisaniu wniosku, przed decyzją o automatycznej akceptacji. Występuje przy każdym wniosku. |
vetted_application_queued( int $user_id ) | Gdy wniosek trafia do kolejki i czeka na decyzję obsługi. Nie występuje, gdy konto zatwierdzono automatycznie. Od 0.2.2. |
vetted_application_approved( int $user_id ) | Po zatwierdzeniu, ręcznym lub automatycznym. |
vetted_application_rejected( int $user_id ) | Po odrzuceniu. |
vetted_file_downloaded( string $ctx, string $rel ) | Przed wysłaniem pliku z chronionego magazynu. $ctx to attachment albo material, $rel to ścieżka względna pliku. |
vetted_purge_attachments | Codzienne zadanie cron, które usuwa stare załączniki. |
E-maile Vetted są podpięte pod cztery pierwsze akcje, więc wychodzą także wtedy, gdy decyzja zapada w kodzie albo w WP-CLI. Na vetted_application_queued wychodzi do klienta e-mail „Vetted: wniosek przyjęty” (identyfikator vetted_application_received, klasa Vetted\Emails\Received, klucz Vetted_Application_Received w WC()->mailer()->get_emails()).
add_action( 'vetted_application_approved', function ( int $user_id ) {
$nip = get_user_meta( $user_id, '_vetted_nip', true );
// Przekaż nowego partnera do CRM.
} );Filtry
| Filtr | Do czego |
|---|---|
vetted_autoapprove_on_regon( bool $auto, int $user_id ) | Czy zatwierdzić konto od razu. Wywoływany tylko dla wniosku z NIP-em, gdy rejestr potwierdził aktywny wpis. Od 0.2.2 wartość domyślna to wynik warunku: „Automatyczna akceptacja” włączona i kod PKD firmy na liście „Kody PKD: akceptacja”. Do 0.2.1 domyślnie true. |
vetted_may_swap_prices( bool $wolno ) | Czy w bieżącym żądaniu wolno podmieniać ceny na hurtowe. Ostatnie słowo po wykluczeniu REST, cron i panelu. |
vetted_private_dir( string $dir ) | Ścieżka chronionego magazynu plików. |
vetted_field_html( string $html, string $key, array $f ) | HTML pojedynczego pola formularza rejestracji. |
vetted_wniosek_lead( string $lead ) | Zdanie wstępu nad formularzem. |
vetted_wniosek_kroki( array $kroki ) | Lista kroków nad formularzem. |
vetted_wniosek_korzysci( array $lista ) | Lista korzyści w karcie obok formularza. |
Wniosek bez NIP-u, bez odpowiedzi rejestru i firmy z zakończoną działalnością zawsze trafia do kolejki, bez pytania filtra. Zachowanie sprzed 0.2.2, w którym każda firma z aktywnym wpisem w REGON dostaje konto od razu, niezależnie od ustawienia i kodów PKD, przywrócisz tak:
add_filter( 'vetted_autoapprove_on_regon', '__return_true' );A tak sprawisz, że każdy wniosek czeka na człowieka, nawet gdy ktoś włączy „Automatyczną akceptację”:
add_filter( 'vetted_autoapprove_on_regon', '__return_false' );Kroki nad formularzem są stałym tekstem w kodzie i obiecują weryfikację „w ciągu 1 dnia roboczego”. Mają dwa warianty, zależnie od ustawienia „Automatyczna akceptacja”, a drugi krok w obu mówi o czasie weryfikacji. Jeśli Twój czas jest inny, zmień je filtrem, a treść e-maila „Vetted: wniosek przyjęty” w jego ustawieniach:
add_filter( 'vetted_wniosek_kroki', function ( array $kroki ) {
$kroki[1] = 'Sprawdzimy wniosek w ciągu 2 dni roboczych.';
return $kroki;
} );Plik produktowy dla porównywarki nie może zawierać cen hurtowych, nawet gdy otworzy go zalogowany partner:
add_filter( 'vetted_may_swap_prices', function ( bool $wolno ) {
return is_feed() ? false : $wolno;
} );Funkcje PHP
Te metody są publiczne i statyczne. Przydają się w motywie i w integracjach.
| Metoda | Zwraca |
|---|---|
\Vetted\Roles::is_wholesale( ?int $user_id = null ) | true, gdy konto ma rolę b2b_customer i status approved. |
\Vetted\Roles::status( ?int $user_id = null ) | none, pending, approved albo rejected. |
\Vetted\Pricing\OrderChannel::of( WC_Order $order ) | hurt albo detal. |
\Vetted\Decisions::approve( int $user_id, ?int $by = null ) | Zatwierdza wniosek jak przycisk w kolejce. |
\Vetted\Decisions::reject( int $user_id, ?int $by = null ) | Odrzuca wniosek i przywraca rolę klienta. |
\Vetted\Pricing\SortPrice::rebuild() | Przelicza pole sortujące dla wszystkich produktów. Zwraca ich liczbę. |
\Vetted\Registration\Form::on_page() | true na stronie z formularzem. Do warunkowego ładowania stylów w motywie. |
wp eval 'echo \Vetted\Pricing\SortPrice::rebuild();'
wp eval '\Vetted\Decisions::approve( 123 );' --user=adminPrzy decyzji z WP-CLI podaj --user. Bez tego w dzienniku zamiast loginu zapisze się 0.
Gdzie Vetted trzyma dane
| Obiekt | Klucze |
|---|---|
| Produkt i wariant | _vetted_wholesale_price, _vetted_wholesale_sale_price, _vetted_wholesale_sale_from, _vetted_wholesale_sale_to, _vetted_hide_price, _vetted_sort_price |
| Kategoria produktu | _vetted_hide_price (yes lub no) |
| Zamówienie | _vetted_channel (hurt lub detal) |
| Kupon | _vetted_audience (b2c, b2b lub all) |
| Użytkownik | _vetted_status, _vetted_business_type, _vetted_nip, _vetted_company_name, _vetted_company_address, _vetted_phone, _vetted_contact_person, _vetted_attachment, _vetted_applied_at, _vetted_consents, _vetted_gus_snapshot, _vetted_gus_match, _vetted_decided_at, _vetted_decided_by |
Ustawienia leżą w opcjach z przedrostkiem vetted_, a dziennik decyzji w opcji vetted_decision_log. Role to b2b_pending i b2b_customer. W _vetted_decided_by wartość -1 oznacza decyzję automatu.
SKU i integracje ERP
Większość złączy ERP, w tym Subiekt, paruje towary po symbolu. Na liście produktów i w ustawieniach WooCommerce Vetted pokazuje ostrzeżenie, gdy któryś produkt nie ma SKU. Licznik sprawdza do 50 produktów opublikowanych, prywatnych i szkiców. Zapisu nie blokuje.
- Cenę hurtową czytaj i zapisuj przez pola
vetted_*, nie przezprice. - Kwoty w polach Vetted są zawsze netto. Na brutto przelicza je sklep, według ustawień podatku i klasy podatkowej produktu.
- Kanał zamówienia odczytasz z metadanej
_vetted_channelalbo przezOrderChannel::of(). - Zapis przez REST albo CSV aktualizuje pole sortujące, tak jak zapis w panelu.
Szablony
Szablony ładuje wc_get_template(), więc nadpisujesz je w katalogu woocommerce/ motywu.
| Plik w motywie | Zmienne |
|---|---|
woocommerce/vetted/partner.php | $odrzucony (bool) |
woocommerce/vetted/wniosek.php | $zlozony (data ISO) |
woocommerce/vetted/firma.php | $nip, $nazwa, $adres, $telefon, $kontakt, $migawka (tablica, data pobrania pod kluczem at) |
woocommerce/vetted/wspolpraca.php | $status, $zlozony, $rozstrzygniety |
woocommerce/vetted/materialy.php | $tresc (gotowy HTML katalogu) |
woocommerce/emails/vetted-new-application.php, vetted-approved.php, vetted-rejected.php oraz wersje w emails/plain/ | $user, $company, $contact, $nip, $phone, $address, $type, $email, $heading, $sent_to_admin, $plain_text |
woocommerce/emails/vetted-application-received.php oraz wersja w emails/plain/ | Te same zmienne i $body: treść z pola „Treść” w ustawieniach e-maila, z podstawionymi znacznikami. |
Shortcode’y to [vetted_rejestracja] i [vetted_materialy]. Podpowiadanie danych z GUS korzysta z akcji AJAX vetted_gus_lookup, chronionej tokenem formularza. Vetted nie dołącza arkuszy stylów. Najważniejsze klasy to b2b-reg, vetted-form, vetted-field, vetted-hidden-price, vetted-materials i vetted-konto.
Jeśli motyw ma pasek postępu do darmowej dostawy oparty na filtrach alpha_prog_dostawy i alpha_prog_suma, Vetted podaje w nich próg i kwotę koszyka brutto dla klienta hurtowego.
Stałe w wp-config.php
VETTED_GUS_KEY: klucz API rejestru REGON. Ma pierwszeństwo przed polem w ustawieniach.VETTED_PRIVATE_DIR: ścieżka chronionego magazynu plików. Katalog nadrzędny musi istnieć i mieć prawo zapisu.
Odinstalowanie
Usunięcie wtyczki domyślnie nie kasuje żadnych danych. Statusy, dane firm i ceny hurtowe zostają w bazie. Jeśli opcja vetted_delete_data_on_uninstall ma wartość yes, przy usuwaniu wtyczki znikną dwie role Vetted. Metadane zostają także wtedy.
wp option update vetted_delete_data_on_uninstall yesCzy ta strona pomogła?
Ostatnia zmiana: 1.10.2026, wersja 0.2.2Zgłoś błąd w tej stronie