WordPress : Restreindre l’accès à un champ de widget spécifique en fonction du rôle de l’utilisateur
WordPress : restreindre des zones de widgets à certains rôles utilisateur 🔒
- 1· Objectif — Empêcher certains utilisateurs (ex : éditeurs) d’accéder ou de glisser des widgets dans des zones spécifiques de l’admin.
- 2· Solution simple — Cacher la zone de widget via un
<style>
en admin si l’utilisateur n’est pas administrateur. - 3· Code prêt à l’emploi :
if ( ! current_user_can( 'administrator' ) ) {
add_action( 'admin_print_styles-widgets.php', function() {
echo '<style> .sidebar-widgets-ab-ads { display: none !important; } </style>';
});
}
- 4· Étape clé — Ajoutez une classe CSS identifiable (ex :
ab-ads
) à vos zones de widget lors de leur déclaration avecregister_sidebar()
. - 5· Astuce bonus — Vous pouvez aussi filtrer les widgets **eux-mêmes** avec
unregister_widget()
selon les rôles si besoin.
➡️ En ajoutant du CSS ciblé dans l’admin, vous limitez l’accès visuel et fonctionnel aux zones sensibles de votre interface widgets.
Je cherche un moyen de restreindre la possibilité de faire glisser certains widgets vers des zones de widgets spécifiques dans l’éditeur de widgets.
Par exemple, je voudrais restreindre le champ widget « annonces » pour qu’il ne soit disponible que pour les administrateurs. Je serais très heureux si je pouvais le faire en désactivant la possibilité de glisser-déposer dans ces champs.
Quelqu’un a une idée?
Solution n°1 trouvée
J’ai fini par ajouter la classe ‘ab-ads’ à toutes mes zones de widgets.
if ( !is_super_admin() ) {
add_action('admin_print_styles-widgets.php', function() {
echo '<style type="text/css">div.sidebar-widgets-ab-ads { display:none; }</style>';
});
}
De cette façon, je les masque simplement pour tous ceux qui ne sont pas administrateurs.
0 commentaire