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