Blog personal de IT, viajes y otros hobbies

redirección escritorio WordPress roles usuario

Redirección de escritorio de WordPress por roles

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.

escritorio de wordpress personalizado
<?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');

Anterior

De Nómade Digital en Malta 🇲🇹

Siguiente

Mi ponencia sobre Gutenberg en la WordCamp Sofía 2017 (Bulgaria)

  1. 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.

  2. ¡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í 🙂

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Funciona con WordPress & Tema de Anders Norén