#Bloquear Acceso Administrativo para Ciertos Roles
Basado en esta WordPress Answer
<?php
/**
* Plugin Name: Bloquear Acceso Administrativo para Ciertos Roles
* Version: 0.2
* Author: Rodolfo Buaiz
* Plugin URI: http://wordpress.stackexchange.com/q/57206/12615
*/
/**
* Redirecciona usuarios registrados para la página frontal
* si intentan acceder a una area restringida
* p.ej.: http:/example.com/wp-admin/plugins.php
*
* Por defecto, WP muestra un mensaje:
* "No tienes permiso para acceder a esta página."
*/
add_action( 'admin_page_access_denied', 'access_denied_wpse_57206' );
function access_denied_wpse_57206()
{
wp_redirect(home_url());
exit();
}
/**
* Redirecciona usuarios con la capacidad 'edit_posts'
* si intentan acceder a una página que tendrían derecho
* p.ej.: http:/example.com/wp-admin/profile.php
*/
add_action( 'admin_init', 'admin_init_wpse_57206' );
function admin_init_wpse_57206()
{
if( current_user_can( 'edit_posts' ) )
return;
wp_redirect( home_url() );
exit();
}
/**
* Redirecciona usuarios con roles 'pending' y 'subscriber' para la página frontal
*/
add_filter( 'login_redirect', 'login_redirect_wpse_57206' );
function login_redirect_wpse_57206( $url )
{
global $user;
if ( isset( $user->roles ) )
{
$result = array_intersect( $user->roles, array( 'author', 'subscriber' ) );
if( !empty( $result ) )
$url = home_url();
}
return $url;
}
/**
* Esconde la barra administrativa para usuarios sin capacidad de 'edit_posts'
*/
add_filter( 'show_admin_bar', 'hide_admin_bar_wpse_51831' );
function hide_admin_bar_wpse_51831( $bool )
{
if( !current_user_can( 'edit_posts' ) )
$bool = false;
return $bool;
}