2016-05-25 2 views
1

Я пытаюсь получить пользовательскую электронную почту для пользователя, используя свое имя пользователя. Информация должна быть для пользователя, чей профиль просматривается, а не для пользователя, который в настоящее время вошли в системуПолучить информацию о пользователе Wordpress с использованием переменных

Я попытался следующий код, но он не работает для меня (это дает мне неопределенную ошибку функции):.

$userdata = get_data_by('user_nicename' , $rusername); 
    if (!$userdata) 
    $rusermail = $userdata->user_email; 

Есть ли способ получить адрес электронной почты пользователя из базы данных с именем пользователя, которое не полагается на строку?

Спасибо!

ответ

2

Использовать вместо get_user_by().

get_data_by() является функцией класса WP_User, так что вы можете использовать его, только если у вас уже есть пользовательский объект (например. $user->get_data_by()).

В вашем случае у вас нет объекта пользователя до, который вы назвали этой функцией.

Ваш обновленный код будет выглядеть следующим образом:

$userdata = get_user_by('user_nicename' , $rusername); 
if ($userdata) 
    $rusermail = $userdata->user_email; 

Примечание Я также дополнительные изменения здесь: if ($userdata), а не if (!$userdata). С восклицательным знаком ваш код для установки электронной почты никогда бы не запустился, потому что вы в основном говорили , если нет пользователя, установите e-mail.

Дополнительное примечание: Я не могу проверить прямо сейчас, но некоторые ссылки говорят, чтобы использовать 'slug' вместо 'user_nicename', чтобы дать, что идти, если последний не работает.

+0

get_user_by() тоже не работает. – SyrupandSass

+0

Какая ошибка вы получаете @SyrupandSass? –

+0

@TimMalone У меня нет ошибки. Это просто ничего не тянет, поэтому я получаю пустую ссылку. – SyrupandSass

2

Я понял ответ сегодня. Или, это то, что окончательно сработало для меня:

global $wpdb; 
      $mytable  = $wpdb->prefix . "table_name"; 
      $mylink = $wpdb->get_row("SELECT * FROM $mytable WHERE user_login = '$rusername'"); 
      $sender = get_user_by('ID', $mylink->ID); 
      $rusermail = $sender->user_email; 
Смежные вопросы