# Konwencje Kodu **Data analizy:** 2026-05-19 ## Reguły Projektowe Źródło: `CLAUDE.md`. - PHP powinien stosować PSR-12. - Klasy: PascalCase. - Metody: camelCase. - Zmienne DB: snake_case. - Unikać zagnieżdżeń powyżej 3 poziomów. - Komentarze mają wyjaśniać "dlaczego", nie "co". - Customizacje tylko w child theme albo dedykowanym pluginie, nigdy w core WordPress. ## Aktualne Wzorce W Kodzie **WordPress/WooCommerce:** - Integracja przez `add_action`, `add_filter`, `register_activation_hook`, `register_deactivation_hook`. - Escaping i sanitizacja przez funkcje WordPress: `esc_html`, `esc_attr`, `sanitize_text_field`, `wp_verify_nonce`. - Ustawienia przez WordPress Settings API w `wp-content/plugins/ws-inpost-map/App/WSInpostSettings.php`. **Custom plugin `ws-inpost-map`:** - Namespace: `WsInpostMapOnCheckout\App`. - Autoloading PSR-4 w `wp-content/plugins/ws-inpost-map/composer.json`. - Stałe pluginu: `WSIM_INPOST_MAP_PLUGIN_DIR_PATH`, `WSIM_INPOST_MAP_PLUGIN_DIR_URL`. - Klasa shipping method `WSIM_InpostShippingMethod` nie jest namespacowana, bo WooCommerce ładuje ją jako nazwę klasy metody wysyłki. ## Odchylenia I Miejsca Do Uważania - `wp-content/plugins/ws-inpost-map/App/WsInpostActions.php` używa mieszanki wcięć 2 spacje i stylu odbiegającego od PSR-12. - `wp-content/plugins/ws-inpost-map/App/WSInpostSettings.php` jest duży względem reszty custom pluginu i łączy definicje pól, rendering admina, ustawienia oraz style dynamiczne. - Brak widocznego child theme w `wp-content/themes/`; nie należy modyfikować `wp-content/themes/betheme/` bez wyraźnego powodu i planu aktualizacji. - Kod vendorowy w `wp-content/plugins/` ma własne standardy; nie traktować go jako stylu dla nowych customizacji. ## Zalecany Kierunek Dla Nowych Zmian - Nowe customizacje sklepu dodawać w dedykowanym pluginie albo child theme. - Dla zmian checkoutu najpierw sprawdzić kolizje z pluginami: - `wp-content/plugins/flexible-checkout-fields/` - `wp-content/plugins/woo-checkout-field-editor-pro/` - `wp-content/plugins/woocommerce-checkout-manager/` - `wp-content/plugins/ws-inpost-map/` - Sanitizować dane wejściowe na granicy requestu i escape'ować przy renderowaniu HTML. - Nie zapisywać sekretów w dokumentacji PAUL. --- *Aktualizuj po ustaleniu automatycznego formatowania albo po wydzieleniu child theme/custom pluginu.*