[Snippet] Ako zostať dlhšie prihlásený vo WordPresse
WordPress bez zaškrtnutého políčka "Zapamätať" odhlási po zatvorení prehliadača, najneskôr po dvoch dňoch. So zaškrtnutím vydrží prihlásenie 14 dní. Kto spravuje web každý deň z toho istého počítača, alebo kto má e-shop, kde sa zákazníci prihlasujú do svojho účtu, zadáva heslo zbytočne často. Krátky kód v tomto článku predĺži prihlásenie so zaškrtnutým "Zapamätať" na 30 dní a administrátorov môže nechať na pôvodných 14.
Ako dlho WordPress drží prihlásenie
Prihlásenie si pamätá cookie, malý súbor, ktorý si prehliadač uloží a pri každej návšteve ho pošle webu späť. Ako dlho platí, závisí od políčka pod heslom:
- Bez zaškrtnutia platí cookie len do zatvorenia prehliadača a najviac dva dni, aj keď prehliadač nezavriete. Výnimkou je prehliadač nastavený tak, aby po spustení obnovil otvorené karty, ten si takú cookie často ponechá.
- So zaškrtnutím "Zapamätať" platí 14 dní, aj po zatvorení prehliadača a reštarte počítača.
- S kódom nižšie platí so zaškrtnutím 30 dní. Bez zaškrtnutia sa nič nemení.
Rovnako to funguje pri prihlásení zákazníka v časti Môj účet vo WooCommerce, kde sa políčko volá "Zapamätať si ma". E-shop používa to isté prihlásenie ako WordPress, takže kód platí aj preň.

Políčko Zapamätať na prihlasovacej stránke WordPressu. Otáznik vedľa neho pribudol vo verzii 7.1.
Kód
Kód vložte do súboru functions.php v odvodenej (child) téme, teda v téme, ktorá preberá vzhľad hlavnej témy a pri jej aktualizácii sa neprepíše. Ak odvodenú tému nemáte, poslúži doplnok na vkladanie kódu, napríklad Code Snippets. Kód začína rovno komentárom, bez úvodného <?php, takže ho môžete vložiť na koniec súboru za existujúci kód.
// dlhšie prihlásenie vo WordPresse: so zaškrtnutým "Zapamätať" 30 dní namiesto 14
function jh_login_expiration( $expiration, $user_id, $remember ) {
// bez zaškrtnutia ostáva predvolené prihlásenie do zatvorenia prehliadača
if ( ! $remember ) {
return $expiration;
}
return 30 * DAY_IN_SECONDS;
}
add_filter( 'auth_cookie_expiration', 'jh_login_expiration', 10, 3 );
Kód sa pripája k filtru auth_cookie_expiration, cez ktorý WordPress pri každom prihlásení zisťuje, ako dlho má cookie platiť. Iný počet dní nastavíte zmenou čísla 30. Čím dlhšie, tým dlhšie platí aj cookie, ktorá sa dostane do nesprávnych rúk, preto ďaleko za mesiac nechoďte.
Doplnok: administrátori ostanú na 14 dňoch
Kto má prihlásenie administrátora, môže na webe urobiť čokoľvek, aj nainštalovať plugin s vlastným kódom. Ak chcete pohodlie hlavne pre zákazníkov e-shopu a pri administrátoroch nechať predvolených 14 dní, použite namiesto kódu vyššie túto verziu:
// dlhšie prihlásenie vo WordPresse: so zaškrtnutým "Zapamätať" 30 dní namiesto 14,
// administrátori ostávajú na predvolených 14 dňoch
function jh_login_expiration( $expiration, $user_id, $remember ) {
// bez zaškrtnutia ostáva predvolené prihlásenie do zatvorenia prehliadača
if ( ! $remember ) {
return $expiration;
}
// administrátor má prístup k celému webu, jeho prihlásenie nepredlžujeme
if ( user_can( $user_id, 'manage_options' ) ) {
return $expiration;
}
return 30 * DAY_IN_SECONDS;
}
add_filter( 'auth_cookie_expiration', 'jh_login_expiration', 10, 3 );
Administrátora kód spozná podľa oprávnenia manage_options, teda prístupu k nastaveniam webu. Ak má na 14 dňoch ostať každý, kto sa dostane do administrácie, aj redaktori a správcovia obchodu, ktorí vidia objednávky a údaje zákazníkov, zmeňte manage_options na edit_posts. Dlhšie prihlásenie potom dostanú len zákazníci a odberatelia.
Na čo si dať pozor
- Cookie nahrádza heslo. Kto ju získa, napríklad zo zabudnutého prihlásenia na cudzom počítači alebo cez škodlivé rozšírenie prehliadača, je na webe prihlásený bez hesla, a to tak dlho, ako cookie platí. Dvojfaktorová autentifikácia (2FA) chráni samotné prihlásenie, ukradnutú cookie nezastaví.
- "Zapamätať" len na vlastnom zariadení. Od verzie 7.1 na to upozorňuje aj WordPress v nápovede pod otáznikom vedľa políčka. Na zdieľanom alebo verejnom počítači políčko nezaškrtávajte a po práci sa odhláste.
- Odhlásenie na diaľku. Ak ste ostali prihlásený na zariadení, ku ktorému sa už nedostanete, otvorte v administrácii Používatelia, Profil a v časti Relácie kliknite na "Odhlásiť sa zo všetkých ostatných zariadení". Tlačidlo sa zobrazí len vtedy, keď ste prihlásený aj inde.
- Nemeňte aj prihlásenie bez zaškrtnutia. Kód schválne nechá prípad bez "Zapamätať" tak, ako je. Pri zmene hesla WordPress podľa dĺžky prihlásenia odhaduje, či ste políčko zaškrtli. Keby kód predĺžil aj prihlásenie bez zaškrtnutia, WordPress by sa pomýlil a po zmene hesla by vás odhlásil už pri zatvorení prehliadača.

Časť Relácie v profile. Tlačidlo odhlási všetky ostatné zariadenia, aktuálne prihlásenie ostane.
Čo kód nerobí
- Nepredĺži prihlásenie, ktoré už beží. Nová dĺžka platí od ďalšieho prihlásenia.
- Políčko "Zapamätať" nezaškrtne za používateľa. Rozhodnutie ostáva na ňom, lebo len on vie, či sedí pri vlastnom počítači.
- Neodhlasuje po nečinnosti. Prihlásenie platí celých 30 dní bez ohľadu na to, či sa na web medzitým niekto pozrie.
- Nepomôže, ak vás WordPress odhlasuje častejšie ako po dvoch dňoch. Príčina je potom inde, napríklad bezpečnostný plugin s vlastným limitom, zmena bezpečnostných kľúčov (salts) v súbore
wp-config.php, ktorá odhlási všetkých, alebo web dostupný na dvoch adresách, s www a bez neho, z ktorých si každá pamätá prihlásenie zvlášť.
Ako overiť, že kód funguje
- Po vložení kódu sa odhláste a prihláste znova so zaškrtnutým "Zapamätať".
- V prehliadači Chrome otvorte nástroje pre vývojárov klávesom F12, na Macu Cmd + Option + I.
- Na karte Application vyberte vľavo Cookies a adresu webu.
- Nájdite riadok, ktorý začína
wordpress_logged_in_. V stĺpci Expires / Max-Age je dátum o 30 dní a 12 hodín neskôr. Tých 12 hodín pridáva WordPress sám ako rezervu, prihlásenie platí 30 dní.
Bez kódu by tam bol dátum o 14 dní a 12 hodín neskôr. Pri verzii s doplnkom má administrátor 14 dní, zákazník 30. Kód som overil na WordPresse 7.1 s WooCommerce 11.2, filter auth_cookie_expiration však WordPress má už od verzie 2.8, takže funguje aj na starších weboch.
Zhrnutie
Predvolených 14 dní so zaškrtnutým "Zapamätať" je kompromis medzi pohodlím a bezpečnosťou. Kód vyššie ho posunie na 30 dní a bez zaškrtnutia nemení nič, takže verejné a zdieľané počítače ostávajú chránené ako doteraz. Pri e-shope odporúčam verziu s doplnkom: zákazníci sa prihlasujú menej často a prihlásenie administrátora ostane kratšie. Ak nechcete kód do webu vkladať sami, pozrite si úpravy a opravy web stránok, alebo mi rovno napíšte.