--- plan_id: 20260521-1428-naprawa-wp-body-open-woocommerce title: Naprawa wp_body_open na podstronach WooCommerce storage: plan-first legacy_phase: null created: 2026-05-21T14:32:06+02:00 status: applied type: execute autonomous: false delegation: auto files_modified: - wp-content/themes/betheme/header-shop.php quality_radar: degraded --- ## Goal Przywrocic wywolanie `wp_body_open()` na podstronach WooCommerce, w tym na stronie produktu `https://krolewskie-miody.pl/produkt/miod-borowkowy-400g/?showIzi=true`. ## Purpose Plugin `inpost-pay` podpina inicjalizacje widgetu pod hook `wp_body_open`. Poprzednia poprawka objela `header.php`, ale produkty i strony sklepu laduja osobny `header-shop.php`, przez co `IPPWidgetOptions` nadal moze nie byc wstrzykiwany. ## Output Zmodyfikowany `wp-content/themes/betheme/header-shop.php` z `` bezposrednio po otwarciu znacznika ``. ## Project Docs @.paul/PROJECT.md @.paul/STATE.md @.paul/codebase/architecture.md @.paul/codebase/db_schema.md @.paul/codebase/impact_map.md @.paul/codebase/quality_risks.md @.paul/codebase/tooling_status.md ## Source Files @wp-content/themes/betheme/header.php @wp-content/themes/betheme/header-shop.php @wp-content/themes/betheme/woocommerce.php @wp-content/themes/betheme/single-template.php @wp-content/plugins/inpost-pay/src/hooks/front/FrontWidgetV2.php - No clarifications needed. ## Quality Radar **Status:** degraded **Tools:** `codebase-memory-mcp` probowal zaindeksowac repo, ale timeoutowal po 120s; `jscpd` i `ast-grep` sa wylaczone przez `.paul/config.md`; uzyto zawezonych skanow `rg` i bezposredniego odczytu plikow. ## Affected Areas - Motyw Betheme / frontend WooCommerce - `wp-content/themes/betheme/header-shop.php`, `wp-content/themes/betheme/woocommerce.php`, `wp-content/themes/betheme/single-template.php`. - Integracja InPost Pay - `wp-content/plugins/inpost-pay/src/hooks/front/FrontWidgetV2.php`, ktory rejestruje skrypt pod `wp_body_open`. ## Duplicate / Hardcoded Risks - Dwa osobne naglowki frontendowe (`header.php` i `header-shop.php`) wymagaja tej samej kompatybilnosci z hookiem WordPress. Obsluga: Task 1 doda hook do wariantu shop, a Task 2 zweryfikuje wszystkie frontendowe `` w motywie. - Brak child theme oznacza ryzyko nadpisania zmiany przy aktualizacji Betheme. Deferred: nie tworzymy child theme w tym hotfixie, bo zakres to pilna naprawa widgetu na podstronach. ## Explicit Deferrals - Nie modyfikujemy pluginu `inpost-pay`; jego uzycie `wp_body_open` jest zgodne z mechanizmem WordPress. - Nie refaktoryzujemy struktury naglowkow Betheme ani nie tworzymy child theme w tym planie. ## AC-1: Produkt WooCommerce uruchamia `wp_body_open` ```gherkin Given strona produktu WooCommerce laduje naglowek `header-shop.php` When WordPress renderuje znacznik `` Then `wp_body_open()` jest wywolane bezposrednio po `>` ``` ## AC-2: InPost Pay ma punkt wstrzykniecia na podstronach sklepu ```gherkin Given plugin `inpost-pay` rejestruje `FrontWidgetV2::add_root_script_after_body_open` na hooku `wp_body_open` When uzytkownik otwiera produkt z `?showIzi=true` Then kod `IPPWidgetOptions` moze zostac wstrzykniety tak jak na stronie glownej ``` ## AC-3: Zakres zmian pozostaje waski ```gherkin Given hotfix dotyczy brakujacego hooka w motywie When zmiana jest wykonana Then nie sa modyfikowane pluginy, WooCommerce core, konfiguracja bazy ani niepowiazane szablony ``` Task 1: Dodaj `wp_body_open()` do naglowka shop wp-content/themes/betheme/header-shop.php Dodaj `` bezposrednio po linii `>`, zachowujac analogiczny uklad jak w `wp-content/themes/betheme/header.php`. `rg -n "wp_body_open| AC-1, AC-2 Task 2: Zweryfikuj pozostale frontendowe warianty body wp-content/themes/betheme/header.php, wp-content/themes/betheme/header-shop.php, wp-content/themes/betheme/template-blank.php, wp-content/themes/betheme/under-construction.php Sprawdz wszystkie istotne frontendowe wystapienia ` `rg -n " AC-3 Task 3: Manualna weryfikacja widgetu InPost Pay na produkcie https://krolewskie-miody.pl/produkt/miod-borowkowy-400g/?showIzi=true Po wdrozeniu otworz wskazana strone produktu z `?showIzi=true`, sprawdz konsole przegladarki i potwierdz, ze nie wystepuje blad `IPPWidgetOptions is not defined`, a widget InPost Pay dziala na podstronie. Manual browser check on production/staging URL AC-2 ## Do Not Change - Nie modyfikowac `wp-content/plugins/inpost-pay/`. - Nie modyfikowac `wp-content/plugins/woocommerce/`. - Nie zmieniac checkoutu, metod platnosci, metod dostawy ani ustawien bazy. - Nie cofaj poprzedniej zmiany w `wp-content/themes/betheme/header.php`. ## Scope Limits - Zakres obejmuje tylko brakujace `wp_body_open()` w sciezce naglowka WooCommerce. - Child theme jest rekomendowanym kierunkiem na przyszlosc, ale nie jest czescia tego hotfixu. - [ ] `rg -n "wp_body_open| - [ ] All AC pass. - [ ] `header-shop.php` ma `wp_body_open()` bezposrednio po ``. - [ ] Nie ma bledu `IPPWidgetOptions is not defined` na wskazanej stronie produktu po wdrozeniu. - [ ] Docs/radar reports updated when relevant. SUMMARY.md path: `.paul/plans/20260521-1428-naprawa-wp-body-open-woocommerce/SUMMARY.md`