159 lines
6.5 KiB
Markdown
159 lines
6.5 KiB
Markdown
---
|
|
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>
|