73 lines
3.7 KiB
Markdown
73 lines
3.7 KiB
Markdown
# Architektura
|
|
|
|
**Data analizy:** 2026-05-19
|
|
|
|
## Przegląd Wzorca
|
|
|
|
**Ogólnie:** monolityczna aplikacja WordPress/WooCommerce z dużą liczbą pluginów i vendorowym motywem.
|
|
|
|
**Kluczowe cechy:**
|
|
- Request lifecycle kontroluje WordPress core przez `index.php`, `wp-blog-header.php`, `wp-load.php` i `wp-settings.php`.
|
|
- Logika sprzedażowa przechodzi przez WooCommerce w `wp-content/plugins/woocommerce/`.
|
|
- Customizacja rozpoznana w kodzie to plugin `wp-content/plugins/ws-inpost-map/`.
|
|
- Motyw `wp-content/themes/betheme/` dostarcza dużą część warstwy prezentacji i shortcodeów.
|
|
|
|
## Warstwy
|
|
|
|
**WordPress Core:**
|
|
- Cel: bootstrap aplikacji, ładowanie konfiguracji, pluginów, motywów i hooków.
|
|
- Lokalizacje: `index.php`, `wp-load.php`, `wp-settings.php`, `wp-config.php`.
|
|
- Uwaga: w repozytorium nie ma pełnego `wp-admin/` ani `wp-includes/`, więc snapshot jest niepełnym drzewem WordPress.
|
|
|
|
**WooCommerce:**
|
|
- Cel: koszyk, checkout, zamówienia, płatności, wysyłki i model danych sklepu.
|
|
- Lokalizacje: `wp-content/plugins/woocommerce/`, pluginy `woo-*`, `woocommerce-*`.
|
|
- Używane przez: customowy plugin `wp-content/plugins/ws-inpost-map/` oraz liczne integracje płatności/dostaw.
|
|
|
|
**Motyw:**
|
|
- Cel: frontend, szablony, shortcode'y i builder.
|
|
- Lokalizacje: `wp-content/themes/betheme/`, `wp-content/themes/twentytwenty*/`.
|
|
- Ryzyko: brak widocznego child theme; customizacje w `wp-content/themes/betheme/` utrudnią aktualizacje.
|
|
|
|
**Custom Plugin: `ws-inpost-map`:**
|
|
- Cel: dodać wybór Paczkomatu InPost na checkout i zapisać wybrany punkt do zamówienia.
|
|
- Entry point: `wp-content/plugins/ws-inpost-map/ws-inpost-map.php`.
|
|
- Manager: `wp-content/plugins/ws-inpost-map/App/WsInpostMap.php`.
|
|
- Hooki checkoutu: `wp-content/plugins/ws-inpost-map/App/WsInpostActions.php`.
|
|
- Metoda wysyłki: `wp-content/plugins/ws-inpost-map/App/WsInpostShippingMethod.php`.
|
|
- Panel ustawień: `wp-content/plugins/ws-inpost-map/App/WSInpostSettings.php`.
|
|
- Assety: `wp-content/plugins/ws-inpost-map/App/Assets.php`.
|
|
|
|
## Przepływ Danych
|
|
|
|
**Checkout z Paczkomatem:**
|
|
1. WordPress ładuje plugin przez `wp-content/plugins/ws-inpost-map/ws-inpost-map.php`.
|
|
2. `WSIM_InpostMapPlugin` uruchamia `WsInpostMapOnCheckout\App\WsInpostMap`.
|
|
3. `WsInpostMap` tworzy `WsInpostActions`, `Assets` i `WSInpostSettings`.
|
|
4. `WsInpostActions` rejestruje hooki WooCommerce, jeśli istnieje klasa `woocommerce` i opcja `active-button` jest włączona.
|
|
5. Frontend checkoutu ładuje mapę i pole `billing__paczkomat_id`.
|
|
6. `saveCustomFieldOrderMeta` zapisuje wartość jako order meta `paczkomat_id`.
|
|
7. `displayPaczkomatFieldInOrder` pokazuje zapisany Paczkomat w adminie zamówienia.
|
|
|
|
**Metoda dostawy:**
|
|
1. `woocommerce_shipping_init` ładuje `App/WsInpostShippingMethod.php`.
|
|
2. `woocommerce_shipping_methods` rejestruje `wsim_inpost_shipping_method`.
|
|
3. `WSIM_InpostShippingMethod` pobiera ustawienia instancji WooCommerce i dodaje rate przez `calculate_shipping`.
|
|
|
|
## Entry Points
|
|
|
|
- `index.php` - web entry point WordPress.
|
|
- `wp-login.php`, `xmlrpc.php`, `wp-cron.php` - standardowe entry pointy WordPress.
|
|
- `wp-content/plugins/ws-inpost-map/ws-inpost-map.php` - entry point customowego pluginu.
|
|
- `wp-content/themes/betheme/functions.php` - bootstrap motywu.
|
|
|
|
## Cross-Cutting Concerns
|
|
|
|
- Hooki WordPress/WooCommerce są głównym mechanizmem integracji.
|
|
- Dane sklepu żyją w bazie WordPress/WooCommerce, a customowe dane InPost są w order meta `paczkomat_id`.
|
|
- Tłumaczenia przez text domain `ws-inpost-map` i katalog `wp-content/plugins/ws-inpost-map/languages/`.
|
|
- Assety frontendowe pluginu InPost są ładowane globalnie przez `wp_enqueue_scripts`, a nie tylko na checkout.
|
|
|
|
---
|
|
*Aktualizuj po zmianie aktywnego motywu, checkoutu, płatności, dostaw albo custom pluginów.*
|