Files
krolewskie-miody.pl/.paul/codebase/architecture.md
2026-05-19 20:05:59 +02:00

3.7 KiB

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.