Home › Forum › Problemi Vari con WP › Mostrare l’avatar dell’utente loggato
-
AutorePost
-
-
21 Marzo 2011 alle 13:28 #17234EmmePartecipante
Veniamo a noi. Saprete sicuramente che nell’ultima versione di WordPress (ma già dalla 3.0) il form dei commenti è stato sostituito da un banalissimo
<?php comment_form(); ?>
Ebbene, dato che mi piace mantenere il mio tema aggiornato, l'ho modificato anch'io in questo modo. Non proprio in questo, a dire il vero, bensଠcon l'inserimento di questo codice, che sostanzialmente provvede alla personalizzazione del form attraverso l'invio di alcuni parametri (si dice cos� Se no chiedo scusa, ma spero mi capiate ugualmente).
Nello specifico, la riga sulla quale mi piacerebbe intervenire è questa, che serve a personalizzare il messaggio per gli utenti loggati (che nel caso del mio blog sono solo io, ma questo per il momento è irrilevante).
Ora... mi piacerebbe che prima del messaggio ("Autenticato come...") comparisse l'avatar dell'utente loggato (non per forza il mio, nell'ipotesi che un giorno decida di permettere l'iscrizione di altri utenti). Non capendo una mazza di php, ho provato a modificare la riga in questo modo. In pratica ho aggiunto
. get_avatar( $comment, 75 ) .
Cosଠfacendo però mi viene restituito, come potete vedere, l'avatar dell'ultimo utente che ha commentato l'articolo (e non quello dell'utente loggato, ossia il mio). Immagino dunque che il problema risieda in quel $comment, perché per il resto fa quello che mi serve.
Ho chiesto allora aiuto al signor Google che, in tutta risposta, mi ha restituito un codice del genere:
<?php global $userdata; get_currentuserinfo(); echo get_avatar( $userdata->ID, 75 ); ?>
Che dovrebbe fare esattamente quello che chiedo (ossia mostrare l'avatar dell'utente loggato). Il problema è che non sono capace di integrarlo nella riga di codice che mi interessa (ci ho provato, lo giuro, ma si è manifestato Satana). Se la cosa non è troppo complessa, mi mostrereste la sintassi corretta?
Un grazie per le eventuali risposte.
P.S. Se occorressero ulteriori informazioni o non fossi stato abbastanza chiaro, fatemi sapere.
-
21 Marzo 2011 alle 14:13 #82474SteveAglAmministratore del forum
global $userdata;
get_currentuserinfo();
Queste due righe le metti prima del form ( <?php $comment_args = array( ‘fields’ => apply_filters( ‘comment_form_default_fields’, array(…. ) e poi
get_avatar( $comment, 75 )
la cambi in
get_avatar( $userdata->ID, 75 )
dovrebbe funzionare—-
-
21 Marzo 2011 alle 14:38 #82475EmmePartecipante
Ti ringrazio, funziona alla grande!
Giusto per capire, la parte che inserisco prima del form rileva alcuni dati dell’utente e, se non ho capito male, li assegna ad una variabile. Quello che invece metto dentro il form estrae l’ID dell’utente dalla variabile per potergli assegnare l’avatar giusto. Anche se con parole mie, quello che ho detto è corretto?
E ancora un’altra cosa (forse un po’ stupida, ma non essendo il mio campo…). Cosa succede quando un utente non è loggato? Cioè, ho verificato: esteticamente parlando non accade nulla, ma credi che quel pezzo di codice fuori dal form possa essere un’appesantimento inutile nell’ottica di un codice ottimizzato?
In ogni caso grazie ancora.
-
21 Marzo 2011 alle 19:18 #82485SteveAglAmministratore del forum
A) Si è corretto la prima riga prende la variabile dell’utente corrente di WP e la globalizza per averne accesso (potrebbe non servire ma male non fa)
la seconda funzione crea i dati utente per l’utente corrente e inizializza la variabile
c) Poi si usa l’array coi dati utente per ricavarne l’avatar
Il codice non appesantisce verificare che l’utente sia loggato o meno per decidere che fare sarebbe anche più pesante… al volo non ricordo cosa accade aquando l’utente non è loggato.. suppongo la variabile sia vuota.
-
21 Marzo 2011 alle 22:30 #82489EmmePartecipante
Per quanto riguarda la seconda domanda, ho letto nel codex che get_currentuserinfo lavora solo se l’utente è loggato. Difatti aggiunge una richiesta al database solo se sono loggato, altrimenti il numero delle queries resta invariato. Perciò direi che non c’è alcun problema. Grazie ancora, sei stato molto esauriente.
-
-
AutorePost
- Devi essere connesso per rispondere a questo topic.