Piotr Dejneka
Dokumentacja wtyczki

Vetted dla deweloperów

  • Dotyczy wersji 0.2.2
  • Zaktualizowano 1.10.2026
  • 8 min czytania
Na tej stronie
    W skrócie

    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.

    PoleZawartośćZapis
    vetted_wholesale_priceCena hurtowa nettoliczba albo pusty ciąg
    vetted_wholesale_sale_priceHurtowa cena promocyjna nettoliczba albo pusty ciąg
    vetted_wholesale_sale_fromPoczątek promocji hurtowejRRRR-MM-DD albo pusty ciąg
    vetted_wholesale_sale_toKoniec promocji hurtowejRRRR-MM-DD albo pusty ciąg
    vetted_hide_priceUkrywanie ceny: yes, no albo pusty ciąg (dziedzicz z kategorii)inna wartość zapisze się jako pusty ciąg
    vetted_wholesale_taxZawsze 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.

    Bash
    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.

    Bash
    curl 'https://sklep.example/wp-json/wc/v3/products?vetted_missing_wholesale=1&per_page=100' \
      -u ck_klucz:cs_sekret
    Cena w API jest zawsze detaliczna

    W 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 eksporcieIdentyfikatorWartości
    Cena hurtowa nettocena_hurtowa_nettokwota netto
    Hurtowa cena promocyjna nettocena_hurtowa_promocyjna_nettokwota netto
    Promocja hurtowa odpromocja_hurtowa_odRRRR-MM-DD
    Promocja hurtowa dopromocja_hurtowa_doRRRR-MM-DD
    Ukryj cenę (yes/no/puste)ukryj_ceneyes, 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

    AkcjaKiedy
    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_attachmentsCodzienne 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()).

    PHP
    add_action( 'vetted_application_approved', function ( int $user_id ) {
    	$nip = get_user_meta( $user_id, '_vetted_nip', true );
    	// Przekaż nowego partnera do CRM.
    } );

    Filtry

    FiltrDo 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:

    PHP
    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ę”:

    PHP
    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:

    PHP
    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:

    PHP
    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.

    MetodaZwraca
    \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.
    Bash
    wp eval 'echo \Vetted\Pricing\SortPrice::rebuild();'
    wp eval '\Vetted\Decisions::approve( 123 );' --user=admin

    Przy decyzji z WP-CLI podaj --user. Bez tego w dzienniku zamiast loginu zapisze się 0.

    Gdzie Vetted trzyma dane

    ObiektKlucze
    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 przez price.
    • 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_channel albo przez OrderChannel::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 motywieZmienne
    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.

    Bash
    wp option update vetted_delete_data_on_uninstall yes

    Czy ta strona pomogła?

    Ostatnia zmiana: 1.10.2026, wersja 0.2.2Zgłoś błąd w tej stronie