Ten rozdział jest dla agencji, freelancerów i administratorów, którzy wdrażają WP InPlate na stronie klienta.
Zgodność
- WordPress 6.4+, PHP 8.1+, WooCommerce 8.0+ (testowane do 11.2).
- Zgodność z HPOS (WooCommerce High-Performance Order Storage) jest zadeklarowana.
- Elementy na stronie to bloki Gutenberga i shortcode'y – działają w dowolnym motywie zgodnym z WordPressem.
- Niestandardowy adres logowania (np. WPS Hide Login) jest obsługiwany przez ekran startowy i aplikacje zespołu.
Adresy aplikacji
WP InPlate rejestruje własne adresy (reguły przepisywania WordPress):
| Adres | Aplikacja |
|---|---|
/wp-inplate/start/ | Ekran startowy zespołu |
/wp-inplate/kds/ | KDS |
/wp-inplate/courier/ | Aplikacja kuriera |
/wp-inplate/radio/ | Radio |
/wp-inplate/tv/ | Launcher TV |
/wp-inplate/tv/{slug}/ | Ekran TV |
/wp-inplate/tv-manager/ | TV Manager |
/wp-inplate/table/{token}/ | Link z kodu QR stolika (przekierowanie na stronę stolikową) |
Każda instalowalna aplikacja ma manifest generowany przez wtyczkę (nazwa z nazwy strony i Ustawienia → System → Aplikacje na telefon i tablet) oraz service worker:
| Adres | Plik |
|---|---|
/wp-inplate/kds-manifest.webmanifest, /wp-inplate/kds-sw.js | Manifest i service worker KDS |
/wp-inplate/courier-manifest.webmanifest, /wp-inplate/courier-sw.js | Manifest i service worker aplikacji kuriera |
/wp-inplate/radio-manifest.webmanifest, /wp-inplate/radio-sw.js | Manifest i service worker Radia |
Wszystkie adresy liczone są od adresu strony, więc WordPress w podkatalogu (np. example.com/sklep/) działa tak samo: KDS jest pod /sklep/wp-inplate/kds/. Serwer nie może obsługiwać rozszerzeń .webmanifest i .js w /wp-inplate/ jako plików statycznych – te żądania muszą trafić do WordPressa.
Jeśli po instalacji adresy zwracają błąd 404, zapisz ponownie ustawienia bezpośrednich odnośników (Ustawienia → Bezpośrednie odnośniki → Zapisz zmiany).
REST API wtyczki działa w przestrzeni nazw wp-inplate/v1 (/wp-json/wp-inplate/v1/…).
Wstrzymanie zamówień jest zapisane w osobnej opcji wp_inplate_ordering_pause, a nie w ustawieniach, więc zapis ustawień ani harmonogramu nigdy go nie cofnie. Endpoint /wp-json/wp-inplate/v1/ordering-pause (GET – osoby z dostępem do KDS, POST i DELETE – uprawnienie inplate_pause_orders albo manage_woocommerce). Wstrzymanie z czasem kończy się przy pierwszym odczycie po upływie czasu, bez crona.
Cache
Wyklucz z pełnego buforowania stron (wtyczki cache, cache serwera, CDN):
- stronę menu, stronę zamówienia i stronę zamawiania do stolika,
- wszystkie adresy
/wp-inplate/…, - REST API
/wp-json/wp-inplate/….
Buforowanie tych adresów jest najczęstszą przyczyną nieaktualnego menu i problemów przy pierwszym zamówieniu testowym.
HTTPS i serwer
- HTTPS jest wymagany do instalacji aplikacji (PWA) i powiadomień push.
- Powiadomienia push wymagają rozszerzenia PHP OpenSSL.
- Mapy i geokodowanie korzystają z OpenStreetMap (kafelki mapy i Nominatim) – serwer i przeglądarka administratora muszą mieć dostęp do
openstreetmap.org. - Zadania czasowe (np. włączanie dań InPlate o północy, przywracanie dań wyłączonych „tylko na dziś”) korzystają z WP-Cron. Na stronach z małym ruchem rozważ systemowy cron wywołujący
wp-cron.php.
Statusy zamówień
| Status KDS | Status WooCommerce |
|---|---|
| Nowe, W przygotowaniu, Gotowe | bez zmian (status ustala płatność, np. „W trakcie realizacji” albo „Wstrzymane”) |
| W drodze | wc-in-transit – status dodany przez WP InPlate (tylko dostawa) |
| Dostarczone | completed |
| Anulowane | cancelled |
Status kuchni, sposób realizacji, termin, stolik i przypisanie są zapisane w danych zamówienia.
Metody płatności i wysyłki
| Identyfikator | Nazwa |
|---|---|
wpi_cash_pickup | InPlate | Zapłać przy kasie (odbiór i posiłek na miejscu) |
wpi_cash_delivery | InPlate | Zapłać kurierowi (dostawa) |
wpi_cash_table | InPlate | Zapłać przy stoliku (stolik QR) |
wp_inplate_shipping | Metoda wysyłki „InPlate – Dostawa / Odbiór” (adres odbioru w e-mailu) |
Serwer odrzuca zamówienie z metodą płatności niepasującą do sposobu realizacji.
Opłata za opakowanie to pozycja opłaty WooCommerce (WC_Order_Item_Fee) z metadanymi _wpi_packaging_fee (sposób realizacji) i _wpi_packaging_gross (kwota brutto). WooCommerce zapisuje opłatę netto i podatek osobno; WP InPlate ustawia podatek zawarty w kwocie brutto, więc klient płaci dokładnie kwotę z ustawień, a wiersze VAT zamówienia się zgadzają.
Typy treści i tabele
- Ekrany TV to typ wpisu
inplate_display, edytowany w Gutenbergu. - Uprawnienia pracowników to uprawnienia WordPressa (capabilities) z przedrostkiem
inplate_(np.inplate_kds_access), a rola pracownika toinplate_operator. - WP InPlate tworzy własne tabele w bazie: dania InPlate, strefy dostawy, przypisania zamówień, historia statusów, szablony dodatków, szablony cross-sell i stoliki QR.
Dane klientów
- Kody logowania – w bazie tylko ich skrót (HMAC), nigdy sam kod. Wygasają po 10 minutach, działają raz.
- Zgody – przy koncie (meta użytkownika
_inplate_consents) i przy zamówieniu (meta zamówienia_inplate_consents): identyfikator, wersja, treść, data, źródło. - Adresy dostawy – meta użytkownika
_inplate_addresses(do 10 adresów: nazwa, miasto, ulica, numer, lokal, wskazówki dla kuriera, współrzędne) i_inplate_default_address. Adresy rozliczeniowy i do wysyłki WooCommerce (Moje konto → Adresy) nie są zmieniane – to dane klienta, np. do faktur. Każde zamówienie ma własny adres dostawy. Współrzędne są ustalane raz przy zapisie (OpenStreetMap), strefy – przy każdym zamówieniu. - NIP – jedno pole dodane do adresu rozliczeniowego WooCommerce (Moje konto → Adresy), meta użytkownika
billing_inplate_nip. Formularze adresów poza tym są w pełni WooCommerce – InPlate niczego w nich nie ukrywa ani nie zmienia. - Eksport i usuwanie – Narzędzia → Eksportuj dane osobowe / Usuń dane osobowe obejmują zgody i adresy dostawy zapisane przy koncie.
Wygląd „Mojego konta”
Gdy w Ustawienia → Konta klientów włączony jest Wygląd „Mojego konta” w stylu InPlate, strony Mojego konta WooCommerce dostają klasę wpi-account na <body> i arkusz account-look.css. Reguły działają tylko na stronach konta i wygrywają z motywem, więc wygląd jest taki sam na każdej stronie.
Kolory, zaokrąglenia i odstępy zmienisz zmiennymi CSS – bez walki o specyficzność. Wpisz je w arkuszu motywu albo w Wygląd → Dostosuj → Dodatkowy CSS:
body.wpi-account {
--wpi-account-accent: #e63946; /* przyciski, aktywna pozycja menu */
--wpi-account-accent-hover: #c1121f;
--wpi-account-radius: 4px;
--wpi-account-font: "Inter", sans-serif;
}| Zmienna | Domyślnie | Zastosowanie |
|---|---|---|
--wpi-account-accent | --wpif-primary | Przyciski, aktywna pozycja menu, obramowanie pola w trakcie edycji |
--wpi-account-accent-hover | --wpif-primary-hover | Przycisk po najechaniu |
--wpi-account-accent-text | biały | Tekst na przyciskach |
--wpi-account-accent-soft | --wpif-primary-light | Tło aktywnej pozycji menu, poświata pola |
--wpi-account-surface | --wpif-surface | Tło kart |
--wpi-account-soft | --wpif-surface-2 | Tła pomocnicze (nagłówki tabel, najechanie) |
--wpi-account-border | --wpif-border | Obramowania |
--wpi-account-text | --wpif-text | Tekst |
--wpi-account-muted | --wpif-text-2 | Tekst pomocniczy, ikony |
--wpi-account-radius | --wpif-radius-lg | Zaokrąglenie kart |
--wpi-account-radius-sm | --wpif-radius | Zaokrąglenie przycisków i pól |
--wpi-account-nav-width | 250px | Szerokość menu na komputerze |
--wpi-account-gap | 28px | Odstęp menu od treści |
--wpi-account-font | inherit (font motywu) | Krój pisma |
Wartości domyślne pochodzą z tokenów InPlate (--wpif-*), więc strona, która już zmieniła kolory InPlate, ma je też w Moim koncie. Głębsze zmiany: wyłącz wygląd InPlate (ustawienie albo filtr wp_inplate_account_styles) i wystyluj konto w motywie.
Haki dla programistów
Filtry
| Filtr | Argumenty | Zastosowanie |
|---|---|---|
wp_inplate_method_label | $label, $method | Zmiana nazwy metody realizacji widocznej dla klienta (pickup, delivery, dine_in) |
wp_inplate_account_styles | $on | false wyłącza wygląd InPlate w Moim koncie (strona zostaje motywowi) |
wp_inplate_account_downloads | $show | Czy Moje konto pokazuje zakładkę Pobrania. Domyślnie tylko wtedy, gdy sklep ma produkt do pobrania |
Akcje
| Akcja | Argumenty | Kiedy |
|---|---|---|
wp_inplate_kds_status_changed | $order_id, $from, $to, $operator_id | Zmiana statusu kuchni |
wp_inplate_kds_order_assigned | $order_id, $target_id, $kds_status | Przypisanie zamówienia |
wp_inplate_kds_payment_changed | $order_id, $paid, $operator_id | Zmiana statusu płatności w KDS |
wp_inplate_kds_delivery_problem | $order_id, $reason, $operator_id | Kurier zgłosił nieudaną dostawę |
wp_inplate_kds_delivery_problem_cleared | $order_id, $reason, $operator_id | Manager wyczyścił zwrot |
wp_inplate_kds_return_restored | $order_id, $reason, $operator_id | Kurier przywrócił zwrot do dostawy |
wp_inplate_ordering_paused | $pause (kanały, koniec, powód, kto, od kiedy) | Wstrzymanie zamówień albo jego zmiana |
wp_inplate_ordering_resumed | – | Wznowienie zamówień (ręczne) |
wp_inplate_courier_order_taken_over | $order_id, $from_id, $to_id | Kurier przejął zamówienie innego kuriera kodem QR |
wp_inplate_consent_changed | $user_id, $consent_id, $given | Klient z kontem udzielił albo wycofał zgodę (przy zakładaniu konta, w zamówieniu, w Moim koncie) |
Przykład – wysłanie zamówienia do zewnętrznego systemu, gdy kuchnia oznaczy je jako gotowe:
add_action( 'wp_inplate_kds_status_changed', function ( $order_id, $from, $to, $operator_id ) {
if ( 'ready' !== $to ) {
return;
}
// Twoja integracja, np. wysłanie powiadomienia SMS.
}, 10, 4 );Tłumaczenia
Domena tekstowa: wp-inplate. Szablon tłumaczeń: languages/wp-inplate.pot. Dostępne tłumaczenia: en_US, uk.