is_user_logged_in() non funziona - Risoluzione problemi WordPress

18 lug 2012, 10:35:07
Visualizzazioni: 11.3K
Voti: 0

Sto creando un form di login per il mio sito, e ho questa sezione:

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

Dopo il login, la pagina si ricarica senza mostrare alcuna indicazione dell'avvenuto accesso.
Sospetto che is_user_logged_in() non funzioni, ma non so come debuggare questo problema.

AGGIORNAMENTO: Quando faccio questo:

global $current_user;
var_dump($current_user);

Ottengo sempre:

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

Anche se ho effettuato il login con il form sopra.

2
Commenti

Disattiva tutti i plugin di cache e la cache del tuo browser. Succede ancora?

fuxia fuxia
18 lug 2012 10:49:52

Sì, ho provato a cancellare la cache.

Dovrei specificare che sto cercando di integrare WordPress in un sito web esistente.

Quindi preferirei non utilizzare plugin o simili.

Adola Adola
18 lug 2012 10:52:30
Tutte le risposte alla domanda 2
4

Non c'è nulla di sbagliato nella funzione, è il fatto che in realtà non ti stai autenticando!

Dici che stai creando il tuo modulo di login? Questo invia i dati al classico wp-login.php, oppure gestisci tu la richiesta?

Il percorso/dominio del modulo è diverso da quello di WordPress? Se esamini i tuoi cookie, ce ne sono di impostati?

18 lug 2012 11:04:10
Commenti

Sto usando wp_login_form()

Per quanto riguarda il percorso/dominio, non sono proprio sicuro.

Sto usando Chrome, e secondo lo strumento di debug del profilo, suggerisce:

Dominio:localhost Percorso:/ Data:Fri, 10 Aug 2012 11:14:30 GMT Dimensione:70

Adola Adola
18 lug 2012 11:08:07

E per il form, è memorizzato in:

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

E l'installazione di WordPress è in:

http://localhost/newgameplus/wordpress/

Adola Adola
18 lug 2012 11:09:10

Penso che sia il problema - WordPress imposterà un cookie con il percorso /newgameplus/wordpress/, che non verrà letto sotto /newgameplus/TEST/scripts/php/testWP.php. Prova define( 'COOKIEPATH', '/' ); nel tuo wp-config.php

TheDeadMedic TheDeadMedic
18 lug 2012 11:53:35

A proposito, consiglio vivamente di utilizzare virtual host per lo sviluppo: http://wordpress.stackexchange.com/questions/32331/wordpress-local-development-environment

TheDeadMedic TheDeadMedic
18 lug 2012 11:55:43
0

So che è un po' tardi, ma sto aggiungendo la mia risposta per aiutare gli altri. Se utilizzi la funzione wp_signon() per effettuare il login e successivamente verifichi con is_user_logged_in(), devi prima impostare l'utente corrente con wp_set_current_user() perché wp_signon() non gestisce l'impostazione dell'utente corrente come descritto nel codex di WP:

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

Questo è uno dei motivi per cui la funzione is_user_logged_in() restituisce false quando pensavi di aver già effettuato il login di un utente.

7 feb 2023 03:22:22