Перенаправление администратора в панели управления WordPress
Я пытаюсь настроить перенаправление, чтобы администраторы перенаправлялись на другую страницу вместо стандартного дашборда в интерфейсе администрирования 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;
}

Вам не следует использовать Уровни пользователей (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;
}
Этот код выполнит то, что вам нужно.

Если вы хотите перенаправлять на другую страницу при каждой попытке доступа к консоли, а не только после входа, используйте что-то вроде этого:
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();
}
} );

Также добавьте это простое действие к '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';
}
}
