get_user_meta() nu include email-ul utilizatorului?
Mă întreb pur și simplu de ce <?php var_dump(get_user_meta(4)); ?>
nu conține adresa de email a utilizatorului. În schimb, trebuie să folosesc
get_userdata(4)->user_email;
pentru a obține email-ul utilizatorului.
De ce se întâmplă asta sau am ratat eu ceva? get_user_meta()
pare să ofere toate celelalte aspecte și informații despre un utilizator, dar nu și adresa de email.
Matt

Doar voiam să-ți spun că ai la dispoziție get_user_meta
și get_userdata
. Adresa de email poate fi găsită folosind funcția get_userdata
.
Pentru utilizatorul curent, poți aplica următorul cod:
<?php
$user_id = get_current_user_id();
$user_info = get_userdata($user_id);
$mailadresje = $user_info->user_email;
echo $mailadresje;
?>
Te rog să reții că acest cod este aplicabil doar pentru utilizatorul curent. Dacă ai nevoie să obții user_id
-ul pentru o comandă, de exemplu, vei avea nevoie de următorul cod (pe care l-am folosit pentru a afișa emailul utilizatorului pe factura în WooCommerce):
<?php
$user_id = $wpo_wcpdf->export->order->user_id;
$user_info = get_userdata($user_id);
$mailadresje = $user_info->user_email;
echo $mailadresje;
?>
Programare plăcută!

get_user_meta
recuperează un singur câmp meta sau toate câmpurile din datele user_meta
pentru utilizatorul specificat.
Aceasta înseamnă că toate valorile stocate în tabelul user_meta
pot fi obținute folosind get_user_meta
. Adresa de email nu este stocată ca metadata, așa că nu poți obține emailul folosind get_user_meta
.
Adresa de email este stocată împreună cu numele de utilizator și parola în tabelul user
ca date ale utilizatorului.

Um, deci cum obținem adresa de email a utilizatorului pentru a o stoca într-o variabilă?

@Osu vezi http://codex.wordpress.org/Function_Reference/get_currentuserinfo ,http://codex.wordpress.org/Function_Reference/get_userdata

Dacă doriți să returnați doar adresa de email a unui utilizator pe baza ID-ului, fără a încărca întregul obiect de utilizator, iată o funcție rapidă care utilizează variabila globală $wpdb:
/**
* Obține adresa de email a unui utilizator după ID
* @param int $user_id ID-ul utilizatorului
* @return string Adresa de email a utilizatorului
*/
function get_user_email($user_id){
global $wpdb;
return $wpdb->get_var($wpdb->prepare("SELECT user_email FROM wp_users WHERE id=%d", $user_id));
}

Este într-adevăr mai eficient? Aș presupune că cealaltă metodă implică tot doar o singură citire din baza de date și ar putea fi deja în memoria cache a cererii.

Da, este mai eficient. get_userdata() va declanșa update_meta_cache() care interoghează metadatele utilizatorului din tabelul wp_usermeta.
