既然`wp_login`已弃用,是否应该使用它?

时间:2018-01-12 作者:Tristan .L

我正在编写一个小脚本,在登录后需要用户角色。我想wp_login() 那就太好了。我读到这个在用户登录后运行,包含2个参数,其中一个是用户名。通过用户名,我可以了解他们的角色。但看起来wp_login() 已经有很长一段时间不推荐使用了。我不认为wp_signon() 可以用同样的方式满足我的需求wp_login() 可以问题是,我应该使用wp_login()

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

不,你不应该,它已经被弃用了

我认为wp\\u signon()不能像wp\\u login()那样满足我的需要

它的功能完全相同,但有一些新功能

我读到这个在用户登录后运行,包含2个参数,其中一个是用户名。通过用户名,我可以了解他们的角色。

您仍然需要该用户名才能调用wp_login 首先,与wp_signon 它是在凭据数组中传递的,而不是直接作为参数传递。

如果您参考了文档,您会发现一个简单的例子,摘自codex:

$creds = array(
    \'user_login\'    => \'example\',
    \'user_password\' => \'plaintextpw\',
    \'remember\'      => true
);

$user = wp_signon( $creds, false );

if ( is_wp_error( $user ) ) {
    echo $user->get_error_message();
}
另请注意:

注意:wp\\u signon()不处理当前用户的设置。这意味着,如果在触发“init”挂钩之前调用该函数,则在该点之前,is\\u user\\u logged\\u in()将计算为false。如果需要将is\\u user\\u logged\\u in()与wp\\u signon()结合使用,则应显式调用wp\\u set\\u current\\u user()。

关于您的问题,还有一个令人困惑的问题,我应该使用wp\\u login()挂钩吗?

wp_login() 不是钩子,它是一个实际的函数,并且它是被弃用的函数。钩子并没有被弃用,混淆两者是令人困惑的

您的实际问题,也是您应该问的问题,我有一个脚本,当有人登录时,我想运行这个脚本,我如何做到这一点,以及如何获得用户角色?

通过专门询问您尝试的解决方案,您限制了您可能得到的答案的数量。

例如wp_signon 由调用wp_login, 以及wp_login 挂钩由触发wp_signon 也是:

add_action( \'wp_login\', function( $username, \\WP_User $user) {
    // the user object has all the information you need, the username is probably not that useful. Anything you do via the username will just fetch the `$user` that you\'ve just been given
}, 10, 2 );
阅读此处的文档:

https://developer.wordpress.org/reference/hooks/wp_login/

我们看到以下情况:

由#由wp使用包括/用户。php:wp\\u signon()

结束

相关推荐

在cpt-asive.php上改变每页的发帖数量,到目前为止已经尝试了20-30个代码块

我一直在尝试更改我的CPT电影评论存档页面上显示的帖子数量,我尝试了大约20-30种不同的变体(甚至一些插件),但没有成功。是的stuck at 5 posts, 尽管我知道我有10个。也没有分页。更新:修复了该问题。我尝试过的大多数变体都是这样的function wpd_testimonials_query( $query ){ if( ! is_admin() && $query->is_post_type_archive( \'revie