Уважаемые форумчане! Как сделать так, чтобы все пользователи при входе перенаправлялись в личный кабинет ( это легко), а вот админы ( и желательно editor-ы) все же попадали в админку прямо. Плагин упорно редиректит всех либо в ЛК, либо на страницу входа, либо по прооизвольному урлу. Выбрать по роли - никак... (( Может есть хук для этого? Я там легко допишу редирект с помощью wp_redirect... Или тут надо по-другому?
такая конструкция тоже не работает:
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; }
Здравствуйте.
Перенесено в кастомизации.
Вся логика перенаправлений описана в функции rcl_get_authorize_url()
в wp-recall/functions/authorize.php
и эта функция висит также на ВП фильтре login_redirect
. Так что подозреваю что вы что-то делаете не верно. Попробуйте поиграть с приоритетом. Ну или отменять реколл редирект через remove_filter
и полностью написать свою функцию-замену
нда... вроде простейшие вещи, а не работают...
1) игра с приоритетом в меньшую сторону ничего не дает ( и понятно), в большую - дает белый лист... С равным приоритетом функция не отрабатывает
2) remove_filter ('login_redirect', 'rcl_edit_default_login_redirect');
не работает, скорее всего фильтр устанавливается из класса, я не знаю какого.
3) простая строка в указанной функции
rcl_get_authorize_url()
if ( $user_id = 1 ) $redirect = admin_url();
тут же решает проблему, но залезать в код не хочется...
как же быть?
дааа!
Благодарю - через инит выключился, я ж так использовал инит, чтобы гостям бар не показывать, уф - забыл.
И после выключения заработал мой фильтр, он простейший, но админов направляет в админку, всех остальных в ЛК, работает так ( может кому пригодится)
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; }
Благодарю за помощь!