我试图通过使用用户名为用户收到用户的电子邮件。该信息应该针对正在查看其个人资料的用户,而不是针对当前登录的用户。
我尝试了下面的代码,但它不适合我(它给我一个未定义的函数错误):
lorem
有没有办法通过不依赖字符串的用户名从数据库中获取用户的电子邮件地址?
谢谢!
答案 0 :(得分: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 )
。使用感叹号,您设置电子邮件的代码永远不会运行,因为您基本上是在说如果没有用户,请设置电子邮件。
补充说明:我现在无法测试,但有些参考文献说要使用'slug'
代替'user_nicename'
,所以如果后者不起作用。
答案 1 :(得分: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;