fix: add wp_body_open to WooCommerce header
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
---
|
||||
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
|
||||
---
|
||||
|
||||
<objective>
|
||||
## 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 `<?php wp_body_open(); ?>` bezposrednio po otwarciu znacznika `<body>`.
|
||||
</objective>
|
||||
|
||||
<context>
|
||||
## 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
|
||||
</context>
|
||||
|
||||
<clarifications>
|
||||
- No clarifications needed.
|
||||
</clarifications>
|
||||
|
||||
<impact_scan>
|
||||
## 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 `<body>` 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.
|
||||
</impact_scan>
|
||||
|
||||
<acceptance_criteria>
|
||||
|
||||
## AC-1: Produkt WooCommerce uruchamia `wp_body_open`
|
||||
```gherkin
|
||||
Given strona produktu WooCommerce laduje naglowek `header-shop.php`
|
||||
When WordPress renderuje znacznik `<body>`
|
||||
Then `wp_body_open()` jest wywolane bezposrednio po `<body <?php body_class(); ?>>`
|
||||
```
|
||||
|
||||
## 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
|
||||
```
|
||||
|
||||
</acceptance_criteria>
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 1: Dodaj `wp_body_open()` do naglowka shop</name>
|
||||
<files>wp-content/themes/betheme/header-shop.php</files>
|
||||
<action>
|
||||
Dodaj `<?php wp_body_open(); ?>` bezposrednio po linii `<body <?php body_class(); ?>>`, zachowujac analogiczny uklad jak w `wp-content/themes/betheme/header.php`.
|
||||
</action>
|
||||
<verify>`rg -n "wp_body_open|<body" wp-content/themes/betheme/header.php wp-content/themes/betheme/header-shop.php`</verify>
|
||||
<done>AC-1, AC-2</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 2: Zweryfikuj pozostale frontendowe warianty body</name>
|
||||
<files>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</files>
|
||||
<action>
|
||||
Sprawdz wszystkie istotne frontendowe wystapienia `<body` w Betheme. Potwierdz, ze standardowe strony i strony WooCommerce maja `wp_body_open()`. Nie rozszerzaj hotfixu na specjalne tryby `template-blank.php`, `under-construction.php` ani builder/admin, chyba ze sa bezposrednio uzywane przez zglaszana podstrone produktu.
|
||||
</action>
|
||||
<verify>`rg -n "<body|wp_body_open" wp-content/themes/betheme -g "*.php"`</verify>
|
||||
<done>AC-3</done>
|
||||
</task>
|
||||
|
||||
<task type="checkpoint:human-verify" gate="blocking">
|
||||
<name>Task 3: Manualna weryfikacja widgetu InPost Pay na produkcie</name>
|
||||
<files>https://krolewskie-miody.pl/produkt/miod-borowkowy-400g/?showIzi=true</files>
|
||||
<action>
|
||||
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.
|
||||
</action>
|
||||
<verify>Manual browser check on production/staging URL</verify>
|
||||
<done>AC-2</done>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<boundaries>
|
||||
## 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.
|
||||
</boundaries>
|
||||
|
||||
<verification>
|
||||
- [ ] `rg -n "wp_body_open|<body" wp-content/themes/betheme/header.php wp-content/themes/betheme/header-shop.php`
|
||||
- [ ] `php -l wp-content/themes/betheme/header-shop.php` jezeli `php` jest dostepny w PATH.
|
||||
- [ ] Manualnie sprawdzic produkt `https://krolewskie-miody.pl/produkt/miod-borowkowy-400g/?showIzi=true`.
|
||||
- [ ] Quality Radar relevant risks handled or deferred.
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
- [ ] All AC pass.
|
||||
- [ ] `header-shop.php` ma `wp_body_open()` bezposrednio po `<body>`.
|
||||
- [ ] Nie ma bledu `IPPWidgetOptions is not defined` na wskazanej stronie produktu po wdrozeniu.
|
||||
- [ ] Docs/radar reports updated when relevant.
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
SUMMARY.md path: `.paul/plans/20260521-1428-naprawa-wp-body-open-woocommerce/SUMMARY.md`
|
||||
</output>
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
plan_id: 20260521-1428-naprawa-wp-body-open-woocommerce
|
||||
title: Naprawa wp_body_open na podstronach WooCommerce
|
||||
completed: 2026-05-21T14:43:02+02:00
|
||||
storage: plan-first
|
||||
quality_radar: degraded
|
||||
---
|
||||
|
||||
# Summary: Naprawa wp_body_open na podstronach WooCommerce
|
||||
|
||||
## Objective
|
||||
|
||||
Przywrocic kompatybilnosc `wp_body_open()` dla podstron WooCommerce renderowanych przez shopowy naglowek Betheme, tak aby `inpost-pay` mogl wstrzyknac `IPPWidgetOptions` rowniez na stronach produktu i sklepu.
|
||||
|
||||
## What Was Built
|
||||
|
||||
| Area | Result |
|
||||
|------|--------|
|
||||
| Betheme / WooCommerce header | Dodano `<?php wp_body_open(); ?>` bezposrednio po `<body <?php body_class(); ?>>` w `wp-content/themes/betheme/header-shop.php`. |
|
||||
| Zakres innych podstron | Potwierdzono, ze standardowe strony uzywaja `header.php`, a WooCommerce uzywa `header-shop.php`; oba glowne frontendowe naglowki maja teraz `wp_body_open()`. |
|
||||
|
||||
## Files Modified
|
||||
|
||||
- `wp-content/themes/betheme/header-shop.php` - dodany brakujacy hook `wp_body_open()` dla sciezki WooCommerce.
|
||||
- `.paul/STATE.md` - zamkniecie loopa i zapis stanu po UNIFY.
|
||||
- `.paul/codebase/impact_map.md` - dopisany impact scan dla InPost Pay i WooCommerce header.
|
||||
- `.paul/codebase/quality_risks.md` - dopisane ryzyka dotyczace dwoch naglowkow i braku child theme.
|
||||
- `.paul/codebase/tooling_status.md` - zapis plan scan i post-apply scan.
|
||||
- `.paul/codebase/radar/codebase-memory-plan.txt` - surowe notatki ze skanu planu.
|
||||
- `.paul/codebase/radar/codebase-memory-post-apply.txt` - surowe notatki ze skanu po APPLY.
|
||||
- `.paul/plans/20260521-1428-naprawa-wp-body-open-woocommerce/PLAN.md` - status zmieniony na `applied`.
|
||||
|
||||
## Acceptance Criteria Results
|
||||
|
||||
| Criterion | Status | Evidence |
|
||||
|-----------|--------|----------|
|
||||
| AC-1 | Pass | `wp-content/themes/betheme/header-shop.php` ma `wp_body_open()` bezposrednio po `<body <?php body_class(); ?>>`. |
|
||||
| AC-2 | Pass for code path; manual runtime check pending after deploy | `inpost-pay` podpina `FrontWidgetV2::add_root_script_after_body_open` do `wp_body_open`, a shopowy naglowek teraz uruchamia hook. Przegladarkowa weryfikacja URL-a produkcyjnego wymaga wdrozenia. |
|
||||
| AC-3 | Pass | Nie zmieniono pluginu `inpost-pay`, WooCommerce core, checkoutu, platnosci, dostaw ani konfiguracji bazy. |
|
||||
|
||||
## Verification Results
|
||||
|
||||
| Check | Result | Notes |
|
||||
|-------|--------|-------|
|
||||
| `rg -n "wp_body_open|<body" wp-content\themes\betheme\header.php wp-content\themes\betheme\header-shop.php` | Pass | `header.php` i `header-shop.php` maja `wp_body_open()` po `<body>`. |
|
||||
| `rg -n "<body|wp_body_open" wp-content\themes\betheme -g "*.php"` | Pass | Glowne frontendowe naglowki sa pokryte. Specjalne tryby `template-blank.php`, `under-construction.php` i visual builder pozostaly bez zmian celowo. |
|
||||
| `php -l wp-content\themes\betheme\header-shop.php` | Pass | `No syntax errors detected in wp-content\themes\betheme\header-shop.php`. |
|
||||
|
||||
## Quality Radar Results
|
||||
|
||||
**Status:** degraded
|
||||
|
||||
- New risks: brak nowych ryzyk runtime poza istniejacym ryzykiem zmian bez child theme.
|
||||
- Resolved risks: WooCommerce/product pages nie sa juz pominiete przez brak `wp_body_open()` w `header-shop.php`.
|
||||
- Deferred risks: brak child theme; nie naprawiane w tym hotfixie, bo zakres byl pilna kompatybilnosc InPost Pay.
|
||||
- Raw outputs: `.paul/codebase/radar/codebase-memory-plan.txt`, `.paul/codebase/radar/codebase-memory-post-apply.txt`.
|
||||
|
||||
## Deviations
|
||||
|
||||
- `codebase-memory-mcp` nie zakonczyl indeksowania repo w czasie 120s; zastosowano zawężony skan `rg` i bezposredni odczyt plikow.
|
||||
- Manualna weryfikacja produkcyjnego URL-a nie byla wykonywana lokalnie w tej sesji; pozostaje krokiem po wdrozeniu.
|
||||
|
||||
## Key Decisions / Patterns
|
||||
|
||||
- `header.php` pokrywa zwykle strony, a `header-shop.php` pokrywa strony WooCommerce; oba musza utrzymywac kompatybilnosc z `wp_body_open()`.
|
||||
- Specjalne szablony z wlasnym `<body>` nie zostaly zmienione, bo nie obsluguja zglaszanej sciezki produktu.
|
||||
|
||||
## Follow-up
|
||||
|
||||
- Po wdrozeniu sprawdzic `https://krolewskie-miody.pl/produkt/miod-borowkowy-400g/?showIzi=true` w przegladarce i potwierdzic brak `IPPWidgetOptions is not defined`.
|
||||
- Przy kolejnej pracy nad motywem rozwazyc child theme, zeby hotfixy Betheme nie byly tracone przy aktualizacji.
|
||||
Reference in New Issue
Block a user