# Hibaelhárítás: űrlapok, e-mailek és hibakeresés

> Konfliktusteszt, megakadó regisztrációs űrlap, Missing Payment ID hiba, nem működő jelszó-visszaállító link, elmaradó e-mailek és a hibakeresési mód.

Ez a fejezet azt mutatja meg, hogyan keresheted meg egy hiba okát: bővítmény- vagy sablonütközést, gyorsítótárat, e-mail-küldési gondot, és hogyan kapcsolhatod be a bővítmény hibakeresési naplóját.

## Hibakeresési mód (Debug Mode)

A hibakeresési mód a **Restrict → Settings → Misc** fülön az **Enable Debug Mode** négyzettel kapcsolható be ([Általános beállítások és e-mailek](https://hub.hellowp.io/hu/plugins/learndash-restrict-content-pro/beallitasok-altalanos-es-emailek/)). Bekapcsolás után a **Restrict → Tools** oldalon megjelenik a **Debugging** fül. Innentől a bővítmény naplózza a fontos eseményeket: a bővítmény viselkedését, a fiókok módosításait és az e-mail-küldést. Ez segít kideríteni, mi történt egy hibás regisztráció vagy e-mail előtt. Hibakeresés után kapcsold vissza.

## Hogyan keress bővítmény- vagy sablonütközést

Ha egy funkció hibásan működik (törik az elrendezés, nem megy át az űrlap, hibát ad a szerkesztő), gyakran két bővítmény vagy a sablon ütközik. A teszt lényege, hogy kizárásos alapon megkeresed a hibás elemet.

### 1. Készülj fel

- Frissítsd a WordPress magot, a sablont és az összes bővítményt: sok hibát a frissítés megold.
- Készíts teljes mentést az adatbázisról és a fájlokról.
- Ha van, teszteléshez használj tesztkörnyezetet (staging), hogy a látogatók ne vegyenek észre semmit.
- Ürítsd a böngésző gyorsítótárát és a szerveroldali gyorsítótárakat (oldal- és objektumgyorsítótár).

### 2. Sablon tesztelése

1. Nyisd meg a **Megjelenés → Sablonok** oldalt.
2. Ideiglenesen kapcsold be egy alap, módosítatlan WordPress-sablont (például a Twenty Twenty-Four-t).
3. Ürítsd a böngésző gyorsítótárát, és próbáld újra a hibás műveletet. Ha a hiba megszűnt, a sablon okozza. Ha megmaradt, kapcsold vissza a saját sablonodat, és folytasd a bővítményekkel.

### 3. Bővítmények tesztelése

1. Nyisd meg a **Bővítmények → Telepített bővítmények** oldalt.
2. Jelöld ki az összes bővítményt, kivéve azt, amelyet tesztelsz (és amelyik a működéséhez kell).
3. A tömeges műveleteknél válaszd a kikapcsolást, majd alkalmazd.
4. Ürítsd a gyorsítótárat, és próbáld újra. Ha a hiba megszűnt, bővítményütközés van. Ha megmaradt, az ok inkább a szerverbeállításban, az adatbázisban vagy a WordPress beállításaiban keresendő.
5. Kapcsold vissza a bővítményeket egyenként (vagy kisebb csoportokban), és minden bekapcsolás után próbáld újra.
6. Amelyik bővítmény bekapcsolása után újra jelentkezik a hiba, az az ütközés oka.

Ha nincs tesztkörnyezeted, használhatod a Health Check & Troubleshooting bővítményt. A **Eszközök → Webhely állapota → Hibaelhárítás** üzemmódban csak a saját, bejelentkezett munkameneted számára kapcsol ki bővítményeket és vált sablont, a látogatók változatlanul az éles oldalt látják.

### 4. Gyakori további esetek

- **Sablonfelülírások.** A gyermeksablon egyedi sablonfájljai a bővítmény frissítése után elavulhatnak. Nevezd át ideiglenesen a felülíró mappát (például tegyél a végére `-bak` szót), és nézd meg, hogy a régi sablonfájlok okozzák-e a hibát.
- **JavaScript-hibák.** Nyisd meg a böngésző fejlesztői konzolját (F12 vagy Cmd + Option + I), és töltsd újra az oldalt. A piros hibák megmutatják az érintett szkriptet vagy függvényt.
- **404-es oldalak.** Frissítés vagy egyedi tartalomtípus módosítása után fordulhat elő. A **Beállítások → Állandó hivatkozások** oldalon kattints a módosítások mentésére, beállítás módosítása nélkül: ez frissíti az átírási szabályokat.
- **403 Forbidden, REST API tiltás.** Gyorsítótár-, biztonsági, tűzfal- vagy tagsági bővítmény blokkolhatja a REST API (`/wp-json/`) végpontjait. Ideiglenesen kapcsold ki a végpontok tiltását, vagy engedélyezd a REST API útvonalait.
- **Lassú betöltés.** Gyakran nagy adatbázis-lekérdezések, indexelés nélküli adatok, sok átmeneti adat vagy lejárati dátum nélküli ismétlődő bejegyzések okozzák.

### Ha ütközést találtál, mit gyűjts össze

Ha a bővítmény és egy másik termék ütközik, a hibajelentéshez gyűjtsd össze az ütköző bővítmény vagy sablon pontos nevét és verzióját, a hiba lépésről lépésre leírt előidézését, és a webhely rendszerinformációit. Utóbbit a **Restrict → Tools → System Info** fülön, vagy az **Eszközök → Webhely állapota → Infó** oldalon találod.

## A regisztrációs űrlap megakad, nem töltődik be

Ha a regisztrációs űrlap nem töltődik be teljesen, vagy „beragad”, az szinte mindig egy másik bővítmény vagy a sablon hibája. Keresd meg az okot így:

1. **Bővítmények.** Kapcsold ki ideiglenesen az összes bővítményt, kivéve a tagsági bővítményt. Próbáld ki az űrlapot. Ha működik, ütközés van: kapcsold vissza a bővítményeket egyenként, amíg az űrlap újra el nem romlik. Ha az űrlap az összes többi kikapcsolásával sem működik, hagyd őket kikapcsolva, és menj a sablonra.
2. **Egyedi módosítások.** Ha módosítottad a regisztrációs űrlapot ([Regisztrációs űrlap és egyéni mezők](https://hub.hellowp.io/hu/plugins/learndash-restrict-content-pro/beallitasok-regisztracios-urlap/)), vedd ki a módosításokat. Ha az űrlap így működik, a módosításban van a hiba. Az egyedi fejlesztés hibakeresése a te feladatod.
3. **Sablon.** Ha az űrlapot nem módosítottad, kapcsold be ideiglenesen a WordPress alapsablonját. Ha így megy az űrlap, a sablon hibás: cserélj sablont, vagy kérd meg a sablon fejlesztőjét, hogy javítsa. Mondd meg neki, hogy a sablon megtöri a JavaScript és/vagy az AJAX működését.

Tipp: a böngésző fejlesztői konzoljában általában látszanak a sablon JavaScript-hibái. Bármelyik JavaScript-hiba megtörheti a regisztrációs űrlapot és az oldal más funkcióit is. Ha a konzolban a sablonhoz kapcsolódó hibákat látsz, jelezd a sablon fejlesztőjének.

## „Missing Payment ID” hiba regisztrációkor

A **Missing Payment ID** hiba általában JavaScript-hibát jelez, amit többnyire egy másik bővítmény vagy a sablon ütközése okoz. A keresés ugyanaz, mint a megakadó űrlapnál:

1. Kapcsold ki az összes bővítményt a tagsági bővítmény kivételével, és próbáld ki a regisztrációt. Ha megy, kapcsold vissza őket egyenként, amíg a hiba vissza nem tér.
2. Ha az űrlapot módosítottad, vedd ki a módosításokat. Ha így működik, a módosítással van a baj.
3. Ha nem módosítottad, kapcsold be a WordPress alapsablonját. Ha így működik, a sablon hibás, és a fejlesztőjének kell javítania.
4. Nézd meg a böngésző fejlesztői konzolját: a sablonhoz kapcsolódó JavaScript-hibákat jelezd a sablon fejlesztőjének.

## A jelszó-visszaállító linkek nem működnek

Egyes tárhelyek és gyorsítótár-bővítmények (például WP Super Cache, W3 Total Cache) agresszívan gyorsítótároznak, és ez tönkreteheti a jelszó-visszaállító linkeket. A megoldás, hogy a belépési oldalt kizárod a gyorsítótárból. Ha a gyorsítótárnak van süti-fehérlistája, a jelszó-visszaállítás sütijét is fel kell venned rá.

A belépési oldalt a **Restrict → Settings → Misc** fülön adhatod meg.

### Tárhely gyorsítótára

Kérd meg a tárhelyszolgáltatót, hogy a belépési oldal címét tegye a gyorsítótár kivételei közé. A kérésben a saját oldalad belépési oldalának teljes URL-jét add meg, és írd le, hogy a jelszó-visszaállító linkek nem működnek.

### A jelszó-visszaállítás sütije

A link feldolgozásakor a bővítmény sütit állít be. Ennek a neve:

```php
'rcp-resetpass-' . COOKIEHASH
```

Ha a tárhely gyorsítótára süti-fehérlistát használ, ezt a sütit fel kell venni rá. A süti nevét az `rcp_resetpass_cookie_name` szűrővel módosíthatod:

```php
function sajat_rcp_resetpass_cookie_name( $cookie_name ) {
    return 'sajat-suti-nev';
}
add_filter( 'rcp_resetpass_cookie_name', 'sajat_rcp_resetpass_cookie_name' );
```

### Varnish

Ha a szervered Varnish gyorsítótárat használ, a konfigurációban ki kell hagyni a belépési és az admin oldalakat:

```
# Do not cache the admin and login pages
if (req.url ~ "/wp-(login|admin)" || req.url ~ "/login")
    return (pass);
}
```

A bővítménynek a sütit is be kell tudnia állítania. Ha a konfigurációd a `Set-Cookie` fejlécet törli, add hozzá az `rcp-` előtagú sütik kivételét:

```
if (beresp.http.Set-Cookie && bereq.url !~ "^/wp-(login|admin)" && beresp.http.Set-Cookie !~ "comment_" && $.http.Set-Cookie !~ "rcp-") {
	unset beresp.http.Set-Cookie;
}
```

Ha a tárhelyed felületen kezeli a Varnish-konfigurációt, a fehérlistán az `rcp-*` előtagú sütiket kell engedélyezned (helyettesítő karakterrel).

### Gyorsítótár-bővítmények

Minden gyorsítótár-bővítmény más, a kizárás a bővítmény beállításaiban található. A legtöbb lehetővé teszi egyes oldalak kizárását: vedd ki a gyorsítótárból azt az oldalt, amelyen a `[login_form]` rövidkód van. A következő bővítményekről ismert, hogy kizárás nélkül gondot okoznak: WordFence, W3 Total Cache, WP Rocket, WP Super Cache.

## Nem érkeznek meg az e-mailek

A bővítmény e-mailt küld a tagoknak és az adminisztrátoroknak bizonyos eseményeknél (például új regisztrációnál). Ha nem érkeznek meg, haladj végig ezeken a lépéseken.

1. **A tag állapota.** A regisztrációs e-maileket a bővítmény akkor küldi, amikor a tag fiókja **Active** állapotra vált. Ha a tagok nem lesznek automatikusan aktívak, előbb azt javítsd: lásd [A tagok függőben maradnak](https://hub.hellowp.io/hu/plugins/learndash-restrict-content-pro/hibaelharitas-fizetes-es-tagsag/).
2. **E-mail-beállítások.** Nyisd meg a **Restrict → Settings → Emails** fület, és keresd meg az érintett e-mail-sablont (például a fizetős regisztrációhoz az aktív előfizetés e-mailjét, az ingyenes regisztrációhoz az ingyenes tagság e-mailjét). Ellenőrizd, hogy a letiltás négyzete nincs bejelölve, hogy a tárgy ki van töltve, és hogy az üzenet szövege ki van töltve. Ha a tárgy vagy a szöveg üres, az e-mail nem megy ki. A beállítások leírása: [Általános beállítások és e-mailek](https://hub.hellowp.io/hu/plugins/learndash-restrict-content-pro/beallitasok-altalanos-es-emailek/).
3. **Elindul-e az e-mail-küldés?** Telepítheted a WP Mail Logging bővítményt, amely naplózza a kimenő leveleket. Ha az e-mail nem szerepel a naplóban, a küldés nem indul el. Ha szerepel, az e-mail kiment, csak nem érkezett meg: lépj a 4. lépésre. A bővítmény saját hibakeresési naplója is segít ([Hibakeresési mód](#hibakeresési-mód-debug-mode)).
4. **Küldés SMTP-szerveren át.** Ha az e-mail kimegy, de nem érkezik meg, a szerver levélküldése a gond. A legegyszerűbb megoldás egy külön SMTP-szerver használata. Ha van saját SMTP-szervered, a tárhelyed ad egyet (a legtöbb ad), vagy Gmailen át küldenél, a Configure SMTP vagy a WP Mail SMTP bővítménnyel beállíthatod, hogy a WordPress a külső levelezőszerveren át küldjön. Ha nincs SMTP-szervered, vagy nem tudod beállítani, kérj segítséget a tárhelyszolgáltatótól. Másik lehetőség egy tranzakciós levélküldő szolgáltatás (például Mailgun vagy SendGrid).
