get_user_meta() nu include email-ul utilizatorului?

3 apr. 2013, 16:41:11
Vizualizări: 42.6K
Voturi: 11

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

0
Toate răspunsurile la întrebare 3
1
14

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ă!

24 nov. 2015 12:09:07
Comentarii

Mulțumesc, compatriotule :)

Richard Lindhout Richard Lindhout
4 nov. 2020 00:05:59
2
11

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.

3 apr. 2013 16:54:19
Comentarii

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

Osu Osu
17 sept. 2013 10:54:13
3

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));
}
14 mar. 2023 16:19:03
Comentarii

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.

Rup Rup
14 mar. 2023 18:06:47

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

Jiminy Cricket Jiminy Cricket
15 mar. 2023 19:28:59

OK, corect. WP_User::get_data_by( 'id', $user_id ) atunci, care folosește cache-ul dar nu include meta etc.

Rup Rup
15 mar. 2023 21:40:44