好吧,这不容易抓住,但是。。。您的代码中有一个主要问题。。。
您首先进行的检查是:
if ( is_user_logged_in() == 1 ) {
以及
is_user_logged_in() 基于全局
$current_user 变量但是正如你所读到的
login_redirect hook docs:
运行此筛选器时,$current\\u user global可能不可用。因此,您应该使用传递给此筛选器的$user global或$user参数。
因此,这个条件不会得到满足-因此您的代码不会更改任何内容。
您应该使用$user 作为param传递的变量,因此这应该可以做到:
public function login_redirect( $redirect_to, $request, $user ) {
if ( is_a ( $user , \'WP_User\' ) && $user->exists() ) {
if ( $user->has_cap( \'manage_woocommerce\' ) ) {
$redirect_to = get_admin_url() . \'admin.php?page=my-page\';
}
}
return $redirect_to;
}
add_filter( \'login_redirect\', array( $this, \'login_redirect\' ), 10, 3 );