get_user_meta() non include l'email dell'utente?

3 apr 2013, 16:41:11
Visualizzazioni: 42.6K
Voti: 11

Mi chiedo semplicemente perché <?php var_dump(get_user_meta(4)); ?> non contiene l'indirizzo email dell'utente. Invece devo usare

get_userdata(4)->user_email; per ottenere l'email dell'utente.

Perché è così o mi sono perso qualcosa? get_user_meta() sembra fornire tutti gli altri aspetti e informazioni di un utente, tuttavia non l'indirizzo email.

Matt

0
Tutte le risposte alla domanda 3
1
14

Volevo solo farti sapere che hai a disposizione get_user_meta e get_userdata. L'indirizzo email può essere ottenuto utilizzando la funzione get_userdata.

Per l'utente corrente puoi applicare questo codice:

<?php

  $user_id = get_current_user_id(); 
  $user_info = get_userdata($user_id);
  $mailadresje = $user_info->user_email;
  echo $mailadresje;

?>

Nota che questo è applicabile all'utente corrente. Se hai bisogno di ottenere l'user_id di, ad esempio, un ordine, ti servirà il seguente codice (che ho usato per visualizzare l'email dell'utente sulla fattura in WooCommerce):

<?php

  $user_id = $wpo_wcpdf->export->order->user_id;
  $user_info = get_userdata($user_id);
  $mailadresje = $user_info->user_email;
  echo $mailadresje;

?>

Buona programmazione!

24 nov 2015 12:09:07
Commenti

Grazie mille, connazionale :)

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

get_user_meta recupera un singolo campo meta o tutti i campi dei dati user_meta per l'utente specificato.

Ciò significa che tutti i valori memorizzati nella tabella user_meta possono essere ottenuti utilizzando get_user_meta. L'email non è memorizzata come meta dato, quindi non puoi ottenere l'email usando get_user_meta.

L'email è memorizzata insieme a username e password nella tabella user come dato utente.

3 apr 2013 16:54:19
Commenti

Um, quindi come possiamo ottenere l'email dell'utente per memorizzarla come variabile?

Osu Osu
17 set 2013 10:54:13
3

Se desideri ottenere solo l'email dell'utente da un ID utente senza caricare l'intero oggetto utente, ecco una funzione rapida che utilizza la variabile globale $wpdb:

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
Commenti

È davvero più efficiente? Immagino che l'altro modo comporti comunque una sola lettura dal database e potrebbe essere anche nella cache in memoria della richiesta.

Rup Rup
14 mar 2023 18:06:47

Sì, è più efficiente. get_userdata() attiverà update_meta_cache() che interroga i meta dati dell'utente nella tabella wp_usermeta.

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

OK, giusto. WP_User::get_data_by( 'id', $user_id ) allora, che utilizza la cache ma non i meta ecc.

Rup Rup
15 mar 2023 21:40:44