Je l'ai définie pour que les utilisateurs non-administrateurs ne puissent pas voir le lien "Tableau de bord" ou ne puissent pas accéder à la page principale "wp-admin/index.php". J'ai également ajouté un plugin qui empêche les utilisateurs non-administrateurs de créer une nouvelle page . Chaque fois qu'un utilisateur non-administrateur essaie d'ajouter une nouvelle page, il sera accidentellement redirigé vers " wp-admin/index.php? Permissions_error = true ", qui est le principal " wp- admin/index.php ", ou" Tableau de bord ".
Comment puis-je limiter l'accès à wp-admin/index.php (page du tableau de bord principal) ou les rediriger vers leur page wp-admin/profile.php?
capture d'écran de ce que j'essaie de réaliser: Si quelqu'un était assez intelligent pour ajouter "? Permissions_error = true" à côté du "wp-admin/index.php" dans l'adresse url, il aurait accès à la page principale du tableau de bord "wp-admin/index.php", même s'ils n'ont pas la permission de.
La solution la plus simple consiste à connecter load-index.php
et à rediriger les utilisateurs non-administrateurs vers leur profil. Bloquer efficacement l'accès à cette page. Je vais envelopper la vérification des autorisations dans une fonction pour cet exemple (nous l'utilisons plus d'une fois).
function _wpse206466_can_view()
{
// or any other admin level capability
return current_user_can('manage_options');
}
add_action('load-index.php', 'wpse206466_load_index');
function wpse206466_load_index()
{
if (!_wpse206466_can_view()) {
$qs = empty($_GET) ? '' : '?'.http_build_query($_GET);
wp_safe_redirect(admin_url('profile.php').$qs);
exit;
}
}
Vous pouvez également vouloir supprimer la page d'index d'administration du menu administrateur si les utilisateurs ne peuvent pas y accéder. Pour ce faire, connectez-vous à admin_menu
, cochez la case puis supprimez la page.
add_action('admin_menu', 'wpse206466_remove_index');
function wpse206466_remove_index()
{
if (!_wpse206466_can_view()) {
remove_menu_page('index.php');
}
}
Voici tout ce que sous forme de plugin .