6.5 KiB
6.5 KiB
plan_id, title, storage, legacy_phase, created, status, type, autonomous, delegation, files_modified, quality_radar
| plan_id | title | storage | legacy_phase | created | status | type | autonomous | delegation | files_modified | quality_radar | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 20260519-1532-naprawa-inpost-pay-wp-body-open | Naprawa InPost Pay przez przywrócenie wp_body_open | plan-first | null | 2026-05-19T15:32:42+02:00 | applied_pending_human_verify | execute | false | auto |
|
degraded |
Purpose
Wtyczka inpost-pay rejestruje skrypt inicjalizujący IPPWidgetOptions na hooku wp_body_open. Motyw betheme nie wywołuje tego hooka po otwarciu <body>, więc konfiguracja widgetu nie trafia do HTML przed uruchomieniem woocommerceizi.js.
Output
Jedna zmiana w wp-content/themes/betheme/header.php: dodanie <?php wp_body_open(); ?> bezpośrednio po <body <?php body_class(); ?>>.
Source Files
@wp-content/themes/betheme/header.php @wp-content/plugins/inpost-pay/src/hooks/front/FrontWidgetV2.php @wp-content/plugins/inpost-pay/src/InpostPay.php
- Support InPost wskazał brak `wp_body_open()` w `header.php` jako przyczynę niewstrzyknięcia skryptu z `IPPWidgetOptions`. - W repo nie widać child theme dla `betheme`, więc plan dotyka parent theme. To jest świadome odstępstwo od preferowanej reguły projektu; ryzyko nadpisania przy aktualizacji motywu jest zapisane w impact scan i granicach.<impact_scan>
Quality Radar
Status: degraded
Tools: codebase-memory-mcp częściowo dostępny; szerokie zapytania po repo timeoutują. Użyto zawężonego rg i odczytu konkretnych plików.
Affected Areas
- Motyw frontend:
wp-content/themes/betheme/header.php. - InPost Pay widget:
wp-content/plugins/inpost-pay/src/hooks/front/FrontWidgetV2.php. - InPost Pay JS:
wp-content/plugins/inpost-pay/src/InpostPay.phprejestrujeassets/js/woocommerceizi.js.
Findings
FrontWidgetV2::attach_hook()podpinaadd_root_script_after_body_opendowp_body_open.FrontWidgetV2::add_root_script_after_body_open()emitujeconst IPPWidgetOptions = {...}.wp-content/themes/betheme/header.phpma<body <?php body_class(); ?>>, ale nie mawp_body_open().- Brak child theme w
wp-content/themes/oznacza ryzyko, że zmiana wbethemezostanie nadpisana podczas aktualizacji motywu.
Duplicate / Hardcoded Risks
- Nie tworzyć fallbacku
IPPWidgetOptionsw custom JS, bo byłby drugim źródłem prawdy obokinpost-pay. - Nie modyfikować
wp-content/plugins/inpost-pay/, bo problem leży po stronie niewywołanego hooka motywu.
Explicit Deferrals
- Utworzenie child theme zostaje poza zakresem tej poprawki, bo użytkownik zgłasza pilny błąd produkcyjny i wsparcie InPost wskazało minimalną zmianę. </impact_scan>
<acceptance_criteria>
AC-1: Hook WordPress Jest Wywoływany Po Otwarciu Body
Given aktywny motyw renderuje `wp-content/themes/betheme/header.php`
When strona frontendowa otwiera znacznik `<body>`
Then bezpośrednio po nim wywoływane jest `wp_body_open()`
AC-2: InPost Pay Może Wstrzyknąć Konfigurację Widgetu
Given wtyczka `inpost-pay` jest aktywna
When WordPress uruchamia hook `wp_body_open`
Then `FrontWidgetV2::add_root_script_after_body_open()` może wypisać skrypt z `IPPWidgetOptions`
AC-3: Zakres Zmiany Jest Minimalny
Given poprawka dotyczy kompatybilności motywu z hookiem WordPress
When kod zostanie zmieniony
Then nie są modyfikowane pliki `wp-content/plugins/inpost-pay/` ani inne integracje checkoutu
</acceptance_criteria>
Task 1: Dodać wp_body_open do header.php wp-content/themes/betheme/header.php Wstawić `<?php wp_body_open(); ?>` bezpośrednio po linii `>`. Zachować istniejący układ HTML/PHP i nie zmieniać pozostałych hooków Betheme. `rg -n "wp_body_open| Spełnia AC-1 i AC-3. Task 2: Sprawdzić składnię PHP zmienionego pliku wp-content/themes/betheme/header.php Uruchomić lint PHP dla zmienionego pliku, jeśli `php` jest dostępny w PATH. `php -l wp-content/themes/betheme/header.php` albo udokumentowany brak PHP CLI Spełnia AC-1 i AC-3. Task 3: Zweryfikować frontend z aktywnym InPost Pay wp-content/themes/betheme/header.php, wp-content/plugins/inpost-pay/src/hooks/front/FrontWidgetV2.php Na środowisku z aktywną wtyczką `inpost-pay` odświeżyć stronę koszyka/checkoutu i sprawdzić, czy w HTML po `` pojawia się skrypt z `IPPWidgetOptions`. DevTools Console: brak `ReferenceError: IPPWidgetOptions is not defined`; Source/Elements: obecny skrypt `IPPWidgetOptions`. Spełnia AC-2. ## Do Not Change - Nie modyfikować `wp-content/plugins/inpost-pay/`. - Nie modyfikować `wp-content/plugins/ws-inpost-map/`. - Nie zmieniać logiki checkoutu, płatności, dostaw ani assetów Betheme. - Nie dodawać własnego globalnego `IPPWidgetOptions` poza mechanizmem `inpost-pay`.Scope Limits
- Plan naprawia brak standardowego hooka WordPress w aktywnym headerze.
- Plan nie rozwiązuje ogólnego problemu braku child theme.
- Plan nie potwierdza konfiguracji merchant InPost Pay ani poprawności danych API.
<success_criteria>
wp_body_open()jest wwp-content/themes/betheme/header.phpbezpośrednio po<body <?php body_class(); ?>>.- Nie zmieniono plików pluginu
inpost-pay. - PHP lint przechodzi albo brak PHP CLI jest udokumentowany.
- Na środowisku z aktywnym
inpost-paywidget nie zgłaszaIPPWidgetOptions is not defined. </success_criteria>