Remove access to a certain feature in WordPress

1

I'm trying to limit access in a terminated wordpress feature to users in the administrative area. I have already found several ways to remove the "Posts" menu from the panel menu but I have not yet found a solution to take the access if the user enters directly (for example accessing domain.com.br/wp-admin/edit.php)

// remove o menu
remove_menu_page('edit.php');

How to limit access to the resource if the user goes directly without using a plugin?

    
asked by anonymous 18.03.2014 / 20:55

1 answer

2

Actually, You need a plugin , but you will write it yourself;)

I originally posted the following plugin in the question Users Role and Access , here translated and adapted (missing example load-$current_page ). Remove the hooks and functions you do not need, and tailor the detection of users to your needs.

<?php
/*
 * Plugin Name: Técnicas de bloqueio de acesso administrativo a determinados usuários. 
 * Description: Publicado originalmente em [wordpress.se Q#57206](https://wordpress.stackexchange.com/a/72907/12615)
 * Version: 0.3
 * Author: brasofilo 
 * Plugin URI: http://pt.stackoverflow.com/a/9728/201
 */

/* 
 * Quando um usuário visita uma página à qual não tem acesso,
 * i.e.: http:/example.com/wp-admin/plugins.php,
 * WordPress mostra uma mensagem de erro padrão.
 * Este hook vai redirigir o usuário em vez de mostrar essa mensagem
 */
add_action( 'admin_page_access_denied', 'access_denied_wpse_57206' );
function access_denied_wpse_57206()
{
    wp_redirect(home_url());
    exit();
}

/*
 * Redirecionar usuário sem capacidade de 'edit_posts' se tentarem visitar
 * a página de Perfil que, em teoria, teriam capacidade de visualizar
 * http:/example.com/wp-admin/profile.php
 * Esta redireção leva para o Escritório (wp-admin/index.php)
 */
add_action( 'load-profile.php', 'load_profile_sopt_9725' );
function load_profile_sopt_9725()
{
    if( !current_user_can( 'edit_posts' ) ) 
    {
        wp_redirect( admin_url() );
        exit();
    }
}

/*
 * Redirecionar usuário sem capacidade de 'edit_posts' se tentarem visitar
 * qualquer página administrativa que, em teoria, teriam capacidade de visualizar
 */
add_action( 'admin_init', 'admin_init_wpse_57206' );
function admin_init_wpse_57206()
{
    if( !current_user_can( 'edit_posts' ) ) 
    {
        wp_redirect( home_url() );
        exit();
    }
}

/*
 * Redirecionar usuário com as funções 'subscriber' e 'pending'
 */
add_filter( 'login_redirect', 'login_redirect_wpse_57206' );
function login_redirect_wpse_57206( $url )
{
    global $user;
    if ( in_array( $user->roles[0], array( 'pending', 'subscriber' ) ) ) 
    {
        $url = home_url();
    }
    return $url;
}

/*
 * Esconder a barra administrativa de usuários sem capacidade 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;
}
    
18.03.2014 / 21:20