如何在从页面登录时将登录的订阅者重定向到特定页面

时间:2022-01-03 作者:megseoh

当我的订阅者登录时,我想将他们重定向到我们的会员资源页面,但只有当他们从页面(is_page() ). 当他们从我们的自定义帖子类型之一登录时,我希望他们留在这篇帖子上。我们使用弹出模式进行登录,因此在登录过程中,它们不会被重定向到任何地方。

我想要管理员、编辑和;作者登录时将被重定向到WordPress管理仪表板。

这是我尝试过的,但不起作用。当我以管理员或订阅者身份登录时,不会发生任何事情-我仍停留在我所在的页面上:

function custom_login_redirect( $redirect_to, $request, $user ) {
  if ( isset( $user->roles ) && is_array( $user->roles ) ) {
    if ( in_array( \'administrator\', $user->roles ) || in_array( \'editor\', $user->roles ) || in_array( \'author\', $user->roles ) ) {
      $redirect_to = admin_url();
    }
  } elseif ( isset( $user->roles ) && is_array( $user->roles ) ) {
    if ( in_array( \'subscriber\', $user->roles ) && is_page() ) {
      $redirect_to = home_url(\'member-resources\');
    }
  } else {
    return $redirect_to;
  }
}
add_filter( \'login_redirect\', \'custom_login_redirect\', 10, 3 );

1 个回复
SO网友:ScottM

你的逻辑不太正确,因为在某些情况下,你永远不会击中目标return 陈述请尝试以下操作:

function custom_login_redirect( $redirect_to, $request, $user ) {
  if ( isset( $user->roles ) && is_array( $user->roles ) ) {
    if ( in_array( \'administrator\', $user->roles ) || in_array( \'editor\', $user->roles ) || in_array( \'author\', $user->roles ) ) {
      return $redirect_to;
    } else {
      if ( in_array( \'subscriber\', $user->roles ) && is_page() ) {
        return home_url(\'/member-resources/\');
    } 
  } else {
    return $redirect_to;
  }
}
add_filter( \'login_redirect\', \'custom_login_redirect\', 10, 3 );

相关推荐

Use dedicated functions

在下面的页面模板中,应加载额外的JS脚本(“carousel.JS”)和额外的CSS文件(“carousel.CSS”)。如何使用WordPress专用功能运行这些文件?<?php /** * Template Name: Full Width Page * * @package WordPress */ get_header(); while ( have_posts() ) : the_post(); the_conte