Уважаемые форумчане! Как сделать так, чтобы все пользователи при входе перенаправлялись в личный кабинет ( это легко), а вот админы ( и желательно 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;
}
Благодарю за помощь!