Назад к блогу

Как перенаправлять пользователей после входа в систему в зависимости от их роли в WordPress

2022-02-142 минуты чтения

Если вашему сайту/проекту на WordPress требуется перенаправлять пользователей на разные страницы после успешного входа в систему, в зависимости от их ролей, вы можете использовать любой из следующих плагинов:

  1. https://wordpress.org/plugins/role-based-redirect/
    1. Документация: https://wordpress.org/plugins/role-based-redirect/
  2. https://wordpress.org/plugins/peters-login-redirect/
    1. Документация: https://loginwp.com/docs/

Что если вы хотите ограничить количество плагинов и выполнить перенаправление с помощью пользовательского кода?

Вы можете использовать фрагмент кода, подобный следующему (код можно добавить в файл functions.php или в существующий пользовательский плагин):

/**
 * Перенаправлять пользователей после входа в систему.
 * @param $redirect_to
 * @param $request
 * @param $user
 * @return mixed|string|void
 */
function my_site_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 ) ) {
            $redirect_to = admin_url();
        } else if ( in_array( 'customer', $user->roles ) ) {
            $redirect_to = home_url( '/shop/' );
        } else {
            $redirect_to = home_url('/shop');
        }
    }
    return $redirect_to;
}
add_filter( 'login_redirect', 'my_site_login_redirect', 10, 3 );

Краткое объяснение кода

Код реализует фильтр login_redirect.
Код проверяет, имеет ли пользователь роль администратора или редактора; в этом случае пользователь перенаправляется на страницу панели администратора, иначе, если у пользователя есть роль vip_customer, пользователь перенаправляется на страницу /custom-dashboard, а все остальные пользователи будут перенаправлены на страницу /shop.

Категории: