BStudio Plugin — Formularze & Konta

Account Fields

Wersja: 1.0.0 Autor: Biegun.Studio Wymaga: WordPress 5.9+, WooCommerce 6.0+, PHP 7.2+

Własne pola w rejestracji i My Account. Własne zakładki, logika warunkowa, dane w e-mailach zamówień WooCommerce. Bez edycji kodu.

Jak to działa?

Wtyczka przechowuje definicje pól w tabeli wp_baf_fields. Wartości wpisane przez użytkowników trafiają do standardowego wp_usermeta. Hooki WooCommerce wstrzykują pola w odpowiednich miejscach: formularzu rejestracji, zakładce Szczegóły konta i własnych zakładkach My Account. Logika warunkowa działa zarówno w JS (live show/hide) jak i w PHP (walidacja server-side).

Instalacja

  1. Skopiuj folder bstudio-account-fields do /wp-content/plugins/.
  2. Aktywuj wtyczkę w panelu WordPress — tabela wp_baf_fields zostanie automatycznie utworzona.
  3. Przejdź do WooCommerce → Account Fields.
  4. Kliknij + Dodaj pole, skonfiguruj typ, etykietę i lokalizację.
  5. Zapisz — pole pojawi się w wybranym formularzu natychmiast.
Po dodaniu pierwszej własnej zakładki przejdź do Ustawienia → Bezpośrednie odnośniki i kliknij Zapisz zmiany, aby odświeżyć reguły rewrite WordPress.

Typy pól

TypOpis
textJednoliniowe pole tekstowe.
emailPole e-mail z walidacją przeglądarki.
telNumer telefonu — klawiatura numeryczna na mobile.
numberPole liczbowe.
textareaWieloliniowe pole tekstowe.
selectLista rozwijana z opcjami konfigurowanymi w adminie (etykieta + wartość).
checkboxPojedynczy checkbox z etykietą. Wartość: 1 (zaznaczony) lub 0.

Lokalizacje pól

LokalizacjaKlucz DBOpis
RejestracjaregisterFormularz zakładania konta WooCommerce (woocommerce_register_form).
Szczegóły kontaaccountZakładka „Szczegóły konta" w My Account (woocommerce_edit_account_form).
Własna zakładkatab:{slug}Nowa zakładka w nawigacji My Account. Slug pojawia się w URL: /my-account/{slug}/.

Warunki wyświetlania

Każde pole może mieć warunek: Pokaż gdy pole [klucz] = [wartość]. Jeśli warunek nie jest spełniony, pole jest ukryte w interfejsie i pominięte przy walidacji server-side (nie będzie wymagane nawet jeśli jest oznaczone jako required).

Przykład: Stwórz pole Typ konta (select, opcje: Osoba / Firma). Następnie stwórz pole NIP z warunkiem: condition_key = baf_typ_konta, condition_value = Firma. Pole NIP pojawi się tylko gdy klient wybierze „Firma".

Własne zakładki My Account

  1. Kliknij + Dodaj pole, wybierz typ, a w polu Lokalizacja zaznacz Własna zakładka My Account.
  2. Wpisz Slug zakładki (np. dane-firmowe) i Etykietę zakładki (np. Dane firmowe).
  3. Zapisz — zakładka pojawi się automatycznie w My Account dla zalogowanych użytkowników.
  4. Odśwież reguły rewrite: Ustawienia → Bezpośrednie odnośniki → Zapisz zmiany.

Dane w e-mailach zamówień

Hook woocommerce_email_customer_details wstrzykuje sekcję Dodatkowe dane klienta do e-maili zamówień WooCommerce. Wyświetlane są wszystkie wypełnione pola aktywne dla danego klienta — zarówno w wersji HTML jak i tekstowej.

Widoczność w profilu admina

Przejdź do Użytkownicy → Edytuj przy wybranym użytkowniku. Sekcja BStudio Account Fields na dole strony wyświetla i umożliwia edycję wszystkich skonfigurowanych pól dla tego użytkownika.

FAQ

Co się dzieje z danymi po odinstalowaniu wtyczki?

Plik uninstall.php usuwa tabelę wp_baf_fields i opcje baf_schema_version oraz baf_tabs. Dane w wp_usermeta (wartości pól klientów) pozostają — możesz je usunąć ręcznie lub przez narzędzia do czyszczenia bazy danych.

Czy pola są kompatybilne z Block Checkout?

Pola rejestracji i Szczegółów konta używają natywnych hooków WooCommerce, które działają niezależnie od checkoutu. Własne zakładki My Account są obsługiwane przez WC endpoints i działają zarówno z klasycznym, jak i blokowym My Account.

Czy mogę mieć wiele własnych zakładek?

Tak. Każda zakładka ma osobny slug. Możesz tworzyć dowolną liczbę zakładek, przypisując pola do lokalizacji tab:{slug}.

Struktura plików

bstudio-account-fields/
├── bstudio-account-fields.php ← Bootstrap, WC check, activation hook
├── uninstall.php ← Usuwa tabelę i opcje
├── includes/
│ ├── class-baf-installer.php ← dbDelta, maybe_upgrade
│ ├── class-baf-fields.php ← Render, save, My Account tabs, admin profil
│ ├── class-baf-validator.php ← Walidacja + warunki (register + account)
│ └── class-baf-emails.php ← Inject do e-maili WC
├── admin/
│ ├── class-baf-admin.php ← Menu, CRUD AJAX (save/delete/reorder/toggle)
│ ├── views/
│ │ └── fields-list.php ← Lista pól z sekcjami + modal edytora
│ └── assets/
│ ├── baf-admin.css
│ └── baf-admin.js ← Drag & drop, modal, AJAX CRUD
└── public/assets/
    ├── baf-frontend.css
    └── baf-frontend.js ← Logika warunkowa (live show/hide)

Dane techniczne

ParametrWartość
Tabela DBwp_baf_fields (dbDelta, schemat v1.0)
User metawp_usermeta — klucz = field_key z tabeli
Tab configbaf_tabs w wp_options — JSON slug → label
Hooki rejestracjiwoocommerce_register_form, woocommerce_registration_errors, woocommerce_created_customer
Hooki kontawoocommerce_edit_account_form, woocommerce_save_account_details, woocommerce_save_account_details_errors
Hooki zakładekwoocommerce_account_menu_items, woocommerce_account_{slug}_endpoint
Hooki e-mailwoocommerce_email_customer_details (priorytet 20)

Wsparcie i zgłoszenia

Masz pytanie, napotkałeś problem albo chcesz rozwinąć to rozwiązanie pod swój sklep? Pomożemy.

Pomoc techniczna

Problemy z instalacją, konfiguracją lub działaniem wtyczki — opisz zgłoszenie, a wrócimy z rozwiązaniem.

Zgłoszenie (ticket)

Wyślij e-mail na shop@biegun.studio. W temacie podaj nazwę wtyczki i krótki opis. Dołącz wersje WordPressa, WooCommerce i PHP oraz kroki odtworzenia problemu.

Rozwój i modyfikacje

Potrzebujesz dodatkowej funkcji albo integracji? Realizujemy rozszerzenia i wdrożenia na zamówienie — napisz na shop@biegun.studio.

Pełna oferta wtyczek: biegun.studio/sklep