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;