- Statut : non résolu
- Ce sujet contient 7 réponses, 2 participants et a été mis à jour pour la dernière fois par marcel6566, le il y a 5 années et 11 mois.
-
AuteurMessages
-
29 juillet 2016 à 8 h 19 min #565462
Bonjour,
Ma configuration WP actuelle
– Version de WordPress : 4.5
– Version de PHP/MySQL :
– Thème utilisé : nisarg
– Extensions en place :
– Nom de l’hebergeur : 1 and 1
– Adresse du site :Problème(s) rencontré(s) :
Bonjour
Je souhaite cacher la colonne complète du menu admin directement avec du code.
Je souhaite faire une condition sur mes différents roles (pour l’administrateur la colonne n’est pas cachée; pour les autres rôles la colonne est cachée) mais je ne sais pas ou placer cette condition.
Cela peut se faire sur le CSS si rien n’est prévu.Merci pour votre aide
Marcel
3 août 2016 à 21 h 05 min #1064522Hello,
Il va falloir être un tantinet plus précis… De quelle colonne parles-tu ? Peux-tu nous poster un lien vers ton site, ou bien une capture d’écran de la situation ?
3 août 2016 à 21 h 30 min #1064521Bonsoir et merci pour ta réponse
Je souhaite tout simplement supprimer (ou cacher) la colonne à gauche du back-office (Tableau de bord, Articles, Média, Pages, Commentaires, …). Mon site permet aux utilisateurs ayant des rôles différents d’accéder au back-office. Certaines personnes peuvent utiliser le menu contenu dans la colonne de gauche et d’autres ne doivent pas connaitre l’existence de cette colonne.
J »ai vu qu’il était possible de cacher les différents menus (Tableau de bord, Articles, Média, Pages, Commentaires, …), par des modifications via la fonction « remove_menu_items() » dans functions.php, mais cette fonctions est incomplète pour les menus ajoutés par mes plugins.
Je viens de trouver une solution un peu brutale, non conforme aux règles de l’art mais radicale !
J’ai ajouté au début de la fonction _wp_menu_output() dans le fichier menu-header.php le code suivant :$var_cache=getRoleByUsersCourant();
if($var_cache »administrator » && $var_cache »mes_roles_autorisés_à_voir_le_menu ») {
$menu=array(« »);
$submenu= » »;
}Reste à forcer « reduire le menu » en réduction est l’affaire est faite.
Mais si tu connais une autre solution plus « conforme », je suis preneur. Merci par avance.
Cordialement
Marcel3 août 2016 à 22 h 26 min #1064523Hé bien tu peux déjà éviter de modifier le noyau de WP en utilisant un hook :
function _remove_all_menus () {
global $menu, $submenu;
$roles = wp_get_current_user()->roles;
if (!in_array(‘administrator’, $roles) && empty(array_filter($roles, function ($r) { return in_array($r, [‘tes’, ‘roles’]); }))) {
$menu = [];
$submenu = []; // pas sûr que ce soit nécessaire
}
}
add_action(‘admin_menu’, ‘_remove_all_menus’); // attention aux espaces avant/après le nom de la fonction5 août 2016 à 9 h 35 min #1064524Bonjour
Super ton code !
Mais ou trouves-tu les infos afin d’appliquer le code sur la bonne fonction ?
Je le testé et j’ai un message d’erreur :Warning: call_user_func_array() expects parameter 1 to be a valid callback, function ‘_remove_all_menus ‘ not found or invalid function name in /@mon_site/wp-includes/plugin.php on line 525.
J’ai simplifié le nombre de rôles, mais j’ai le même message d’erreur.
if (!in_array(‘administrator’, $roles)) {
Merci pour ton aide
Marcel5 août 2016 à 9 h 40 min #1064525Woops, j’ai mis une espace en trop après le nom de ma fonction, dans [c]add_action[/c] 😕
5 août 2016 à 9 h 44 min #106452624 octobre 2018 à 18 h 39 min #2218162Bonjour,
Désolé pour le retard … Mieux vaut tard que jamais !
Merci ton code fonctionne correctement.
Cordialement
Marcel
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.