Administracja

Informacje techniczne dla wdrożeniowców

Adresy aplikacji, REST API, statusy zamówień, zgodność z HPOS, wykluczenia z cache, haki dla programistów i tabele w bazie.

Dotyczy WP InPlate 1.25.2 · Aktualizacja:

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

AdresAplikacja
/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:

AdresPlik
/wp-inplate/kds-manifest.webmanifest, /wp-inplate/kds-sw.jsManifest i service worker KDS
/wp-inplate/courier-manifest.webmanifest, /wp-inplate/courier-sw.jsManifest i service worker aplikacji kuriera
/wp-inplate/radio-manifest.webmanifest, /wp-inplate/radio-sw.jsManifest 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 KDSStatus WooCommerce
Nowe, W przygotowaniu, Gotowebez zmian (status ustala płatność, np. „W trakcie realizacji” albo „Wstrzymane”)
W drodzewc-in-transit – status dodany przez WP InPlate (tylko dostawa)
Dostarczonecompleted
Anulowanecancelled

Status kuchni, sposób realizacji, termin, stolik i przypisanie są zapisane w danych zamówienia.

Metody płatności i wysyłki

IdentyfikatorNazwa
wpi_cash_pickupInPlate | Zapłać przy kasie (odbiór i posiłek na miejscu)
wpi_cash_deliveryInPlate | Zapłać kurierowi (dostawa)
wpi_cash_tableInPlate | Zapłać przy stoliku (stolik QR)
wp_inplate_shippingMetoda 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 to inplate_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:

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;
}
ZmiennaDomyślnieZastosowanie
--wpi-account-accent--wpif-primaryPrzyciski, aktywna pozycja menu, obramowanie pola w trakcie edycji
--wpi-account-accent-hover--wpif-primary-hoverPrzycisk po najechaniu
--wpi-account-accent-textbiałyTekst na przyciskach
--wpi-account-accent-soft--wpif-primary-lightTło aktywnej pozycji menu, poświata pola
--wpi-account-surface--wpif-surfaceTło kart
--wpi-account-soft--wpif-surface-2Tła pomocnicze (nagłówki tabel, najechanie)
--wpi-account-border--wpif-borderObramowania
--wpi-account-text--wpif-textTekst
--wpi-account-muted--wpif-text-2Tekst pomocniczy, ikony
--wpi-account-radius--wpif-radius-lgZaokrąglenie kart
--wpi-account-radius-sm--wpif-radiusZaokrąglenie przycisków i pól
--wpi-account-nav-width250pxSzerokość menu na komputerze
--wpi-account-gap28pxOdstęp menu od treści
--wpi-account-fontinherit (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

FiltrArgumentyZastosowanie
wp_inplate_method_label$label, $methodZmiana nazwy metody realizacji widocznej dla klienta (pickup, delivery, dine_in)
wp_inplate_account_styles$onfalse wyłącza wygląd InPlate w Moim koncie (strona zostaje motywowi)
wp_inplate_account_downloads$showCzy Moje konto pokazuje zakładkę Pobrania. Domyślnie tylko wtedy, gdy sklep ma produkt do pobrania

Akcje

AkcjaArgumentyKiedy
wp_inplate_kds_status_changed$order_id, $from, $to, $operator_idZmiana statusu kuchni
wp_inplate_kds_order_assigned$order_id, $target_id, $kds_statusPrzypisanie zamówienia
wp_inplate_kds_payment_changed$order_id, $paid, $operator_idZmiana statusu płatności w KDS
wp_inplate_kds_delivery_problem$order_id, $reason, $operator_idKurier zgłosił nieudaną dostawę
wp_inplate_kds_delivery_problem_cleared$order_id, $reason, $operator_idManager wyczyścił zwrot
wp_inplate_kds_return_restored$order_id, $reason, $operator_idKurier 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_idKurier przejął zamówienie innego kuriera kodem QR
wp_inplate_consent_changed$user_id, $consent_id, $givenKlient 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:

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