Пользователи перенаправляются на главную страницу вместо wp-admin

30 апр. 2016 г., 21:27:26
Просмотры: 44.8K
Голосов: 3

После переноса моего сайта 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 );

Пожалуйста, помогите! Спасибо и Счастливой Пасхи!

1
Комментарии

Вы также можете использовать этот плагин. https://wordpress.org/plugins/role-based-redirect/

Yasar Yasar
25 июл. 2018 г. 07:46:34
Все ответы на вопрос 4
0

Ура, я разобрался! Оказалось, в моей теме был редирект в 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' )

Эта статья мне очень помогла.

1 мая 2016 г. 19:44:40
1

@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'
22 июн. 2018 г. 05:24:52
Комментарии

К вашему сведению, в вашем ответе есть одна лишняя закрывающая скобка (в конце оператора if). Это сбило меня с толку на пару минут. Но всё равно спасибо. Это помогло мне (я хочу перенаправлять пользователей без прав администратора на главную страницу)

MrVimes MrVimes
22 июл. 2021 г. 15:29:27
0

Приведенный ниже код работает так, как ожидалось. Этот код ограничивает доступ пользователей, не являющихся администраторами, к 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;
    }
}
30 янв. 2019 г. 09:48:57
1
-2

ПОСЛЕДНИЙ РАБОЧИЙ СПОСОБ Вы можете временно отключить редирект из файла wp-login.php, а затем удалить все недавно установленные или обновленные плагины.

  1. Откройте файл wp-login.php для отключения редиректа

2. Прокрутите вниз до строки с кодом "do_action( "login_form_{$action}" );" В моем случае это была строка около 461

  1. Закомментируйте эту строку кода, чтобы отключить редирект

  2. Сохраните файл. Теперь вы сможете войти через http://www.example.com/wp-login.php

  3. Отключите или удалите все недавно установленные плагины, особенно те, которые управляют функциями контроля доступа

  4. Очистите куки и кеш браузера

19 дек. 2017 г. 23:18:43
Комментарии

Изменять основные файлы WordPress — это очень плохая практика

Anton Lukin Anton Lukin
19 дек. 2017 г. 23:33:26