Je souhaite restreindre l'accès à certaines pages du plugin/normal WP Pages. J'ai trouvé un moyen de masquer ces pages dans le menu, mais ne les limite pas pour le moment. Par exemple, j'ai un éditeur et je ne veux pas qu'ils aient accès à Media
et Tools
- je peux cacher ces pages via ceci:
function editor_menu() {
global $menu;
if(!current_user_can('administrator'))
{
$restricted = array(__('Media'),__('Tools'));
end ($menu);
while (prev($menu)){
$value = explode(' ',$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
}
}
}
add_action('admin_menu', 'editor_menu', 999);
Mais comment puis-je les empêcher de voir cette page entièrement? Comme les autorisations?
Je pense que la solution correcte ici consiste simplement à mettre à jour le composant $ feature des éléments admin_menu plutôt que de simplement les supprimer de la structure de menu.
Essaye ça:
/** Set 'administrator' cap for particular menu items **/
function update_admin_menu() {
global $menu, $submenu;
$menu[10][1] = 'administrator'; // Media
foreach( $submenu['upload.php'] as &$item ) {
$item[1] = 'administrator';
}
$menu[75][1] = 'administrator'; // Tools
foreach( $submenu['tools.php'] as &$item ) {
$item[1] = 'administrator';
}
}
add_action( 'admin_menu', 'update_admin_menu', 1000 );
Veuillez noter que la vérification par rapport aux niveaux d'utilisateurs est obsolète, mais cela fonctionne dans cette situation et est essentiellement identique à celui que vous auriez si vous créiez une nouvelle limite ( auxquels les administrateurs auraient automatiquement accès,) et attribueront cette capacité à ces éléments de menu.