9 ответ(ов) в теме
Игорь Динов
не в сети 1 месяц
На сайте с 16.03.2019
Участник
Тем 15
Сообщения 75
1
11:52
Версия WP-Recall:16.17.15

Уважаемые форумчане! Как сделать так, чтобы все пользователи при входе перенаправлялись в личный кабинет ( это легко), а вот админы ( и желательно editor-ы) все же попадали в админку прямо. Плагин упорно редиректит всех либо в ЛК, либо на страницу входа, либо по прооизвольному урлу. Выбрать по роли - никак... (( Может есть хук для этого? Я там легко допишу редирект с помощью wp_redirect... Или тут надо по-другому?

0
Игорь Динов
не в сети 1 месяц
На сайте с 16.03.2019
Участник
Тем 15
Сообщения 75
2
12:08

такая конструкция тоже не работает:

add_filter( 'login_redirect', 'ino_login_redirect', 10, 3 ); 
function ino_login_redirect($redirect_to, $request, $user){ 
		global $user;
		$cur_user_id = get_current_user_id();
		    if ( isset( $user->roles ) && is_array( $user->roles ) ) {
			  	if ( in_array( 'administrator', $user->roles ) ) {
			  		$redirect_to =  admin_url();					
				} 
				else {
				$redirect_to = home_url(); // тут в личный кабинет
				}
		    }
		    else  return $redirect_to;
}

0
Дружаев Владимир (Otshelnik-Fm)
На сайте с 27.01.2013
Модератор
Тем 30
Сообщения 14828
3
12:45

Здравствуйте.

Перенесено в кастомизации.

Вся логика перенаправлений описана в функции rcl_get_authorize_url() в wp-recall/functions/authorize.php

и эта функция висит также на ВП фильтре login_redirect. Так что подозреваю что вы что-то делаете не верно. Попробуйте поиграть с приоритетом. Ну или отменять реколл редирект через remove_filter и полностью написать свою функцию-замену

0
Игорь Динов
не в сети 1 месяц
На сайте с 16.03.2019
Участник
Тем 15
Сообщения 75
4
14:00

Понял, сейчас пошаманю немного и отпишусь.

0
Игорь Динов
не в сети 1 месяц
На сайте с 16.03.2019
Участник
Тем 15
Сообщения 75
5
16:40

нда... вроде простейшие вещи, а не работают...
1) игра с приоритетом в меньшую сторону ничего не дает ( и понятно), в большую - дает белый лист... С равным приоритетом функция не отрабатывает
2) remove_filter ('login_redirect', 'rcl_edit_default_login_redirect');
не работает, скорее всего фильтр устанавливается из класса, я не знаю какого.
3) простая строка в указанной функции

rcl_get_authorize_url()

if ( $user_id = 1 ) $redirect = admin_url();

тут же решает проблему, но залезать в код не хочется...
как же быть?

Редакции сообщения
02.08.2019 16:48Игорь ДиновПричина: не указано
0
Дружаев Владимир (Otshelnik-Fm)
На сайте с 27.01.2013
Модератор
Тем 30
Сообщения 14828
6
17:45

Игорь Динов сказал(а)
2) remove_filter ('login_redirect', 'rcl_edit_default_login_redirect');

надо отключать используя такой же приоритет. т.е.

remove_filter('login_redirect', 'rcl_edit_default_login_redirect', 10);

0
Игорь Динов
не в сети 1 месяц
На сайте с 16.03.2019
Участник
Тем 15
Сообщения 75
7
18:04

приоритет при отключении в 10 автоматом ставится. Хотя я все перепробовал, включая и 10... Там что-то не то...

0
Дружаев Владимир (Otshelnik-Fm)
На сайте с 27.01.2013
Модератор
Тем 30
Сообщения 14828
8
18:16

тогда надо в функцию и на init хук повесить:

add_action( 'init', 'aaaa' );
function aaaa(){
    remove_filter('login_redirect', 'rcl_edit_default_login_redirect', 10);
}

0
Игорь Динов
не в сети 1 месяц
На сайте с 16.03.2019
Участник
Тем 15
Сообщения 75
9
19:28

дааа!
Благодарю - через инит выключился, я ж так использовал инит, чтобы гостям бар не показывать, уф - забыл.
И после выключения заработал мой фильтр, он простейший, но админов направляет в админку, всех остальных в ЛК, работает так ( может кому пригодится)

add_action( 'init', 'ino_remove_rclhook' );
function ino_remove_rclhook(){
    remove_filter('login_redirect', 'rcl_edit_default_login_redirect', 10);
}

add_filter( 'login_redirect', 'ino_login_rcl_redirect', 10,3 ); 
function ino_login_rcl_redirect( $redirect_to, $request, $user){ 
//проверим входящего - а он вообще есть?
    if (isset($user->roles) && is_array($user->roles)) {
        //проверка на админа
        if (in_array('administrator', $user->roles)) {
            // этого в админку 
            $redirect_to =  admin_url();
        }
        else {
        	// всех остальных в ЛК
        	$cur_user_id = get_current_user_id();
        	$redirect_to = home_url(). "/account/?user='".$cur_user_id."'";
		}
    }

    return $redirect_to;
}

Благодарю за помощь!

Редакции сообщения
02.08.2019 19:29Игорь ДиновПричина: не указано
1
Тема закрыта. Публикация новых сообщений запрещена.