A la hora de moldear el administrador de WordPress para mis clientes sigo la premisa de «cuanto menos mejor«. Y uno de esos ejemplos es el «Escritorio de WordPress», que viene con noticias, enlaces a las entradas, páginas, próximas Meetups, actividad etc. El usuario fácilmente puede distraerse y empezar a pinchar enlaces, inclusive accediendo a zonas del administrador a las que no tendría que acceder.
Solución
Implementa este código en tu tema/plugin, e indica el rol que quieres filtrar y a qué página quieres redireccionar. En el ejemplo indico que todos los usuarios con el rol de «Editor» cuando quieran acceder al escritorio, que sean redireccionados al listado de Páginas.
<?php
/**
* Función para que un determinado rol de usuario
* no pueda acceder al administrador de WordPress.
*
* @author Mauricio Gelves <mg@maugelves.com>
*
*/
function mg_dashboard_redirect(){
// Obtengo el usuario actual
$user = wp_get_current_user();
// Pregunto por un rol específico
if( in_array( 'editor', $user->roles ) ):
// En caso que se encuentre en el array de roles lo redirecciono.
// En este caso lo estoy enviado al listado de páginas.
wp_redirect(admin_url('edit.php?post_type=page'));
exit;
endif;
}
add_action('load-index.php', 'mg_dashboard_redirect');
Actualización
Nuestro queridísimo amigo Fernan Díez ha hecho un upgrade del post con una gran idea: crear una página de inicio con documentación para el uso del administrador de WordPress.

<?php
/**
* Como primer medida creamos un menú bajo "Herramientas"
*/
function docs_admin_menu() {
add_management_page( 'Docs', 'Docs', 'manage_categories', 'docs', 'content_docs_admin_menu' );
}
add_action( 'admin_menu', 'docs_admin_menu' );
/**
* Aquí podemos crear nuestro HTML con la
* documentación para los usuarios responsables de
* cargar el contenido en el administrador.
*/
function content_docs_admin_menu() {
echo '<div class="wrap">';
echo '<h1>Docs Section</h1>';
echo '<h2>Lorem ipsum dolor sit amet</h2>';
echo '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nec cursus magna.</p>';
echo '<h2>Ut laoreet hendrerit dui</h2>';
echo '<p>Sed nec ipsum scelerisque, pellentesque urna at, fermentum nisi.</p>';
echo '<h3>Morbi vehicula quam quis lorem ultrices viverra</h3>';
echo '<p>Integer massa ipsum, consectetur eu luctus non, venenatis et est.</p>';
echo '<p><iframe width="560" height="315" src="https://www.youtube.com/embed/iJzUL79GaTo" frameborder="0" allowfullscreen></iframe></p>';
echo '</div>';
}
/**
* El código base para la redirección, pero apuntando
* a la nueva página creada.
*/
function mg_dashboard_redirect(){
// Get the current user
$user = wp_get_current_user();
// Asking for Editor role
if( in_array( 'editor', $user->roles ) ):
// If Editor role exists then redirect
wp_redirect(admin_url('tools.php?page=docs'));
exit;
endif;
}
add_action('load-index.php', 'mg_dashboard_redirect');
Fernan
Buena combinación, ¡mola!
Creo que mañana va directo a algún proyecto de clientes para facilitarles la vida cuando quieran publicar nuevo contenido.
Fernan
¡Muy buena idea!
Y me acabas de dar otra.
– Crear una sección en el administrador con recursos de ayuda propios y redirigir al usuario a esa sección para que siempre la tenga a mano .
Si lo preparo, lo comparto por aquí 🙂
Fernan
Lo prometido es deuda, si a alguien le sirve, pues aquí mismo lo dejo para utilizarlo 🙂
Crea una nueva sección dentro de Tools / Herramientas,
y redirige a un usuario con privilegios de editor al acceder:
https://gist.github.com/fernandiez/f06efa92c629b2371f9ef7f7db6a80cb
Mauricio Gelves
Excelente idea Fernan! Lo agrego al post!
Un abrazo!