使用变量获取Wordpress用户信息

I'm trying to get the user email for a user by using their username. The information should be for the user whose profile is being viewed, not for the user that's currently logged in.

I tried the code below, but it's not working for me (it's giving me an undefined function error):

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

Is there any way to get the user's email address from the database with the username that doesn't rely on a string?

Thanks!

Use get_user_by() instead.

get_data_by() is a function of the WP_User class, so you can only use it if you've already got a user object (eg. $user->get_data_by()).

In your case you don't have the user object until you've called this function.

Your updated code would look like:

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

Note I've also made an extra change here: if ( $userdata ) rather than if ( !$userdata ). With the exclamation mark, your code to set the e-mail never would have run because you were basically saying if there's no user, set the e-mail.

Additional note: I'm unable to test right now, but some references say to use 'slug' instead of 'user_nicename', so give that a go if the latter doesn't work.

I figured out the answer today. Or, this is what finally worked for me:

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;