is_user_logged_in() nu funcționează - soluții pentru probleme de autentificare WordPress

18 iul. 2012, 10:35:07
Vizualizări: 11.3K
Voturi: 0

Fac un formular de autentificare pentru site-ul meu și am această secțiune:

<?php
if (is_user_logged_in()) {
    echo 'Bună, ', $user_login, '. <a href="', wp_logout_url(), '" title="Delogare">Delogare</a>';
} else {
    wp_login_form();
}

Și după autentificare, revine la pagină fără nicio indicație că m-am autentificat.
Bănuiesc că is_user_logged_in() nu funcționează, dar nu știu cum să depanez această problemă.

EDIT: Ori de câte ori fac asta:

global $current_user;
var_dump($current_user);

Mereu primesc:

ect(WP_User)#3 (7) { ["data"]=> NULL ["ID"]=> int(0) ["caps"]=> array(0) { } ["cap_key"]=> NULL ["roles"]=> array(0) { } ["allcaps"]=> array(0) { } ["filter"]=> NULL }

Indiferent dacă m-am 'autentificat' cu formularul de mai sus.

2
Comentarii

Dezactivează toate pluginurile de caching și cache-ul browserului tău. Se mai întâmplă?

fuxia fuxia
18 iul. 2012 10:49:52

Da, am încercat să șterg cache-ul.

Ar trebui să menționez că încerc să integrez WordPress într-un site existent.

Așa că nu prea vreau să folosesc pluginuri sau altceva.

Adola Adola
18 iul. 2012 10:52:30
Toate răspunsurile la întrebare 2
4

Nu este nimic în neregulă cu funcția, problema este că nu ești de fapt autentificat!

Spui că îți creezi propriul formular de autentificare? Acesta trimite date la wp-login.php standard, sau gestionați cererea singur?

Diferă calea/domeniul formularului față de WordPress? Dacă inspectezi cookie-urile tale, sunt setate vreunul?

18 iul. 2012 11:04:10
Comentarii

Folosesc wp_login_form()

Și când vine vorba de cale/domeniu, nu sunt foarte sigur.

Folosesc Chrome, iar conform instrumentului de depanare, sugerează:

Domeniu:localhost Cale:/ Data:Fri, 10 Aug 2012 11:14:30 GMT Mărime:70

Adola Adola
18 iul. 2012 11:08:07

Iar formularul este stocat în:

http://localhost/newgameplus/TEST/scripts/php/testWP.php

Iar instalarea WordPress este:

http://localhost/newgameplus/wordpress/

Adola Adola
18 iul. 2012 11:09:10

Cred că asta este problema - WordPress va seta un cookie cu calea /newgameplus/wordpress/, care nu va fi citit sub /newgameplus/TEST/scripts/php/testWP.php. Încearcă define( 'COOKIEPATH', '/' ); în fișierul tău wp-config.php

TheDeadMedic TheDeadMedic
18 iul. 2012 11:53:35

Apropo, aș recomanda cu mare încredere utilizarea gazdelor virtuale pentru dezvoltare: http://wordpress.stackexchange.com/questions/32331/wordpress-local-development-environment

TheDeadMedic TheDeadMedic
18 iul. 2012 11:55:43
0

Știu că este destul de târziu, dar adaug răspunsul meu pentru a ajuta pe alții. Dacă utilizați funcția wp_signon() pentru autentificare și verificați ulterior cu is_user_logged_in(), trebuie să setați mai întâi utilizatorul curent cu wp_set_current_user() deoarece wp_signon() nu gestionează setarea utilizatorului curent, așa cum este descris în codex-ul WP:

https://developer.wordpress.org/reference/functions/wp_signon/

Acesta este unul dintre motivele pentru care funcția is_user_logged_in() returnează false atunci când credeți că ați autentificat deja un utilizator.

7 feb. 2023 03:22:22