get_user_meta() не включает email пользователя?
Меня интересует, почему <?php var_dump(get_user_meta(4)); ?> не содержит email адрес пользователя. Вместо этого мне приходится использовать
get_userdata(4)->user_email; чтобы получить email пользователя.
Почему так происходит или я что-то упустил? get_user_meta() предоставляет все остальные аспекты и информацию о пользователе, но почему-то не включает email-адрес.
Матт
Хочу обратить ваше внимание, что в WordPress есть функции get_user_meta и get_userdata. Email пользователя можно получить с помощью функции get_userdata.
Для текущего пользователя можно использовать следующий код:
<?php
$user_id = get_current_user_id();
$user_info = get_userdata($user_id);
$mailadresje = $user_info->user_email;
echo $mailadresje;
?>
Обратите внимание, что этот код работает для текущего пользователя. Если вам нужно получить user_id, например, из заказа (я использовал этот код для отображения email пользователя в счете WooCommerce), используйте следующий код:
<?php
$user_id = $wpo_wcpdf->export->order->user_id;
$user_info = get_userdata($user_id);
$mailadresje = $user_info->user_email;
echo $mailadresje;
?>
Удачного программирования!
get_user_meta извлекает одно мета-поле или все поля данных user_meta для указанного пользователя.
Это означает, что все значения, хранящиеся в таблице user_meta, могут быть получены с помощью get_user_meta. Email не хранится как метаданные, поэтому вы не можете получить email с помощью get_user_meta.
Email хранится вместе с именем пользователя и паролем в таблице user как данные пользователя.
Эм, как нам получить email пользователя, чтобы сохранить его в переменную?
Osu
@Osu посмотри http://codex.wordpress.org/Function_Reference/get_currentuserinfo , http://codex.wordpress.org/Function_Reference/get_userdata
Rajeev Vyas
Если вам нужно получить только email пользователя по его ID без загрузки всего объекта пользователя, вот быстрая функция с использованием глобальной переменной $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));
}
Это действительно эффективнее? Я бы предположил, что другой способ все равно требует всего одного чтения из базы данных и может быть к тому же в оперативном кеше запроса.
Rup
Да, это эффективнее. get_userdata() вызовет update_meta_cache(), который выполняет запрос метаданных пользователя в таблице wp_usermeta.
Jiminy Cricket