Перенаправление администратора в панели управления WordPress

9 нояб. 2011 г., 21:02:58
Просмотры: 14K
Голосов: 5

Я пытаюсь настроить перенаправление, чтобы администраторы перенаправлялись на другую страницу вместо стандартного дашборда в интерфейсе администрирования WordPress.

Если убрать условие, перенаправление работает, но тогда оно также перенаправляет и обычных пользователей, чего я не хочу.

Вот код, который я добавил в functions.php:

add_filter('login_redirect', 'dashboard_redirect');
function dashboard_redirect($url) {
  global $current_user;
  get_currentuserinfo();
  $level = (int) $current_user->wp_user_level;

  if ( $level > 10  ) {
    $url = 'wp-admin/edit.php';
  }

  return $url;
}     
1
Комментарии

Как насчет того, чтобы отмечать правильными ответы, которые определенно сэкономили ваше время?

Johannes Pille Johannes Pille
26 нояб. 2011 г. 01:47:30
Все ответы на вопрос 4
0

Вам не следует использовать Уровни пользователей (Userlevels). Уровни пользователей были заменены в WordPress 2.0 и официально устарели начиная с версии 3.0.

add_filter( 'login_redirect', 'dashboard_redirect' );
function dashboard_redirect( $url ) {
    if ( current_user_can( 'manage_options' ) ) {
         $url = esc_url( admin_url( 'edit.php' ) );
    }

    return $url;
}    

Этот код выполнит то, что вам нужно.

9 нояб. 2011 г. 21:09:52
0

Если вы хотите перенаправлять на другую страницу при каждой попытке доступа к консоли, а не только после входа, используйте что-то вроде этого:

add_action( 'current_screen', function() {
    $screen = get_current_screen();
    if ( isset( $screen->id ) && $screen->id == 'dashboard' ) {
        wp_redirect( admin_url( 'edit.php?post_type=my-post-type' ) );
        exit();
    }
} );
16 нояб. 2020 г. 07:08:35
1

Также добавьте это простое действие к 'login_form' (подробнее см. на этом сайте).
Например, для перенаправления в панель управления можно использовать:

add_action('login_form', 'redirect_after_login');
function redirect_after_login() {
    global $redirect_to;
    if (!isset($_GET['redirect_to'])) {
        $redirect_to = get_option('siteurl') . '/wp-admin/index.php';
    }
}
12 янв. 2012 г. 13:44:44
Комментарии

это сработало отлично для меня.

TJ Sherrill TJ Sherrill
23 апр. 2013 г. 18:55:44
0

Попробуйте обернуть функцию в это условие current_user:

if (current_user_can('administrator')) {
// Ваш код редиректа здесь
}
9 нояб. 2011 г. 21:09:24