¿Por qué get_user_meta() no incluye el email del usuario?
Me pregunto simplemente por qué <?php var_dump(get_user_meta(4)); ?>
no contiene la dirección de email del usuario. En su lugar, tengo que usar
get_userdata(4)->user_email;
para consultar el email del usuario.
¿Por qué es así o me he perdido algo? get_user_meta()
parece proporcionar todos los demás aspectos e información de un usuario, sin embargo, no incluye la dirección de email.
Matt

Solo quería hacerte saber que tienes get_user_meta
y get_userdata
. La dirección de correo electrónico se puede encontrar usando la función get_userdata
.
Para el usuario actual, se puede aplicar este código:
<?php
$user_id = get_current_user_id();
$user_info = get_userdata($user_id);
$mailadresje = $user_info->user_email;
echo $mailadresje;
?>
Ten en cuenta que esto es aplicable al usuario actual. Si necesitas obtener el user_id
de, por ejemplo, un pedido, necesitas el siguiente código (que utilicé para mostrar el correo del usuario en la factura de WooCommerce):
<?php
$user_id = $wpo_wcpdf->export->order->user_id;
$user_info = get_userdata($user_id);
$mailadresje = $user_info->user_email;
echo $mailadresje;
?>
¡Feliz programación!

get_user_meta
recupera un solo campo meta o todos los campos de los datos user_meta
para el usuario dado.
Esto significa que todos los valores almacenados en la tabla user_meta
pueden obtenerse usando get_user_meta
. El correo electrónico no se almacena como metadato, por lo que no puedes obtener el correo electrónico usando get_user_meta
.
El correo electrónico se almacena junto con el nombre de usuario y la contraseña en la tabla user
como datos del usuario.

Eh, entonces ¿cómo obtenemos el correo electrónico del usuario para almacenarlo como variable?

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

Si deseas obtener solo el correo electrónico de un usuario a partir de su ID sin cargar todo el objeto de usuario, aquí tienes una función rápida que utiliza la variable global $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));
}

¿Es eso realmente más eficiente? Supondría que la otra forma sigue siendo solo una lectura de la base de datos, y podría estar también en la caché en memoria de la solicitud.

Sí, es más eficiente. get_userdata() activará update_meta_cache() que consulta los metadatos del usuario dentro de la tabla wp_usermeta.
