is_user_logged_in() nu funcționează - soluții pentru probleme de autentificare WordPress
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.

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?

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

Iar formularul este stocat în:
http://localhost/newgameplus/TEST/scripts/php/testWP.php
Iar instalarea WordPress este:
http://localhost/newgameplus/wordpress/

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

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

Ș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.
