无法在 wp_login 挂钩上使用 WordPress 中的 get_user_by 或 wp_get_current_user 函数访问用户详细信息
Can't access user details with get_user_by or wp_get_current_user function in WordPress on wp_login hook
我正在构建一个插件,该插件需要在用户登录 WordPress 站点时获取用户名和电子邮件。我尝试在 WordPress 中同时使用 get_user_by()
和 wp_get_current_user()
函数,但无济于事。我正在使用 wp_login
动作挂钩。
代码示例:
function send_login_notification()
{
$user_info = get_user_by('id', get_current_user_id());
$user_name = ucfirst($user_info->user_login);
$user_email = $user_info->user_email;
[...]
}
add_action('wp_login', 'send_login_notification');
但是,有时,但并非总是出现以下错误:
Notice: Trying to get property of non-object in [file path] on line 48
Notice: Trying to get property of non-object in [file path] on line 49
如果我刷新,它可能会起作用,这很奇怪。真的是碰碰运气。
我没有使用过这个特定的挂钩,但听起来它使用会话/cookie 来保存用户详细信息。在这种情况下,您的第一个呼叫发生在会话 created/available 之前。但是,在刷新时会话可用并且代码有效。
您是否尝试过设置操作的优先级以确保尽可能晚地发生?大多数事件的优先级为 10,因此将您的操作设置在 10 之后的某处即可。
add_action('wp_login', 'send_login_notification', 15, 2);
如果这不起作用,您应该在 codex 上获取一个,或者 here 它表明您可以自己对用户进行身份验证,然后您可以构建用户数据来为您自己的代码进行操作。
$user = wp_authenticate($username, $password);
希望添加该行会有所不同。
似乎以上两种方法都不足以确保登录会话对脚本可用,因此需要对函数进行小的更改以通过 [=25 使用函数可用的数据=].
function send_login_notification($username, $password)
{
$user_info = get_user_by('login', $username);
我正在构建一个插件,该插件需要在用户登录 WordPress 站点时获取用户名和电子邮件。我尝试在 WordPress 中同时使用 get_user_by()
和 wp_get_current_user()
函数,但无济于事。我正在使用 wp_login
动作挂钩。
代码示例:
function send_login_notification()
{
$user_info = get_user_by('id', get_current_user_id());
$user_name = ucfirst($user_info->user_login);
$user_email = $user_info->user_email;
[...]
}
add_action('wp_login', 'send_login_notification');
但是,有时,但并非总是出现以下错误:
Notice: Trying to get property of non-object in [file path] on line 48
Notice: Trying to get property of non-object in [file path] on line 49
如果我刷新,它可能会起作用,这很奇怪。真的是碰碰运气。
我没有使用过这个特定的挂钩,但听起来它使用会话/cookie 来保存用户详细信息。在这种情况下,您的第一个呼叫发生在会话 created/available 之前。但是,在刷新时会话可用并且代码有效。
您是否尝试过设置操作的优先级以确保尽可能晚地发生?大多数事件的优先级为 10,因此将您的操作设置在 10 之后的某处即可。
add_action('wp_login', 'send_login_notification', 15, 2);
如果这不起作用,您应该在 codex 上获取一个,或者 here 它表明您可以自己对用户进行身份验证,然后您可以构建用户数据来为您自己的代码进行操作。
$user = wp_authenticate($username, $password);
希望添加该行会有所不同。
似乎以上两种方法都不足以确保登录会话对脚本可用,因此需要对函数进行小的更改以通过 [=25 使用函数可用的数据=].
function send_login_notification($username, $password)
{
$user_info = get_user_by('login', $username);