Пользователи перенаправляются на главную страницу вместо wp-admin
После переноса моего сайта WordPress пользователи не являющиеся Администраторами перенаправляются на главную страницу сайта после входа. На старом сайте они перенаправлялись в wp-admin. Администратор перенаправляется в wp-admin как и должно быть.
Я хочу, чтобы пользователи перенаправлялись в wp-admin
после входа.
Я изменил siteurl в базе данных (wp_options
), также добавил этот фильтр в мой functions.php
:
function my_login_redirect( $redirect_to, $request, $user ) {
// Возвращает URL админ-панели
return admin_url();
}
add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );
Пожалуйста, помогите! Спасибо и Счастливой Пасхи!
Ура, я разобрался! Оказалось, в моей теме был редирект в functions.php
примерно такого вида:
// Блокировать доступ к /wp-admin для не-администраторов.
function custom_blockusers_init() {
if ( is_user_logged_in() && is_admin() && !current_user_can( 'administrator' ) ) {
wp_redirect( home_url() );
exit;
}
}
add_action( 'init', 'custom_blockusers_init' ); // Хук на 'init'
Всё, что нужно сделать — добавить свою проверку прав, например: !current_user_can( 'manage-reports' )
Эта статья мне очень помогла.

@Hello Lili прав. Но нам также следует проверить DOING_AJAX!
// Блокировка доступа к /wp-admin для неадминистраторов.
function custom_blockusers_init() {
if ( is_user_logged_in() && is_admin() && !current_user_can( 'administrator' ) && (defined( 'DOING_AJAX' ) && !DOING_AJAX) ) ) {
wp_redirect( home_url() );
exit;
}
}
add_action( 'init', 'custom_blockusers_init' ); // Подключение к хуку 'init'

Приведенный ниже код работает так, как ожидалось. Этот код ограничивает доступ пользователей, не являющихся администраторами, к wp-admin или странице профиля.
add_action( 'admin_init', 'redirect_non_admin_users' );
/**
* Перенаправление пользователей без прав администратора на главную страницу
*
* Эта функция прикреплена к хуку действия 'admin_init'.
*/
function redirect_non_admin_users() {
if ( ! current_user_can( 'manage_options' ) && '/wp-admin/admin-ajax.php' != $_SERVER['PHP_SELF'] ) {
wp_redirect( home_url() );
exit;
}
}

ПОСЛЕДНИЙ РАБОЧИЙ СПОСОБ Вы можете временно отключить редирект из файла wp-login.php, а затем удалить все недавно установленные или обновленные плагины.
- Откройте файл wp-login.php для отключения редиректа
2. Прокрутите вниз до строки с кодом "do_action( "login_form_{$action}" );" В моем случае это была строка около 461
Закомментируйте эту строку кода, чтобы отключить редирект
Сохраните файл. Теперь вы сможете войти через http://www.example.com/wp-login.php
Отключите или удалите все недавно установленные плагины, особенно те, которые управляют функциями контроля доступа
Очистите куки и кеш браузера
