web-dev-qa-db-fra.com

Rediriger les utilisateurs non administrateurs de wp-admin/index.php (page du tableau de bord principal) vers wp-admin/profile.php

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.

  • J'ai essayé d'ajouter "Redirect 301 /localhost/ft/wp-admin/index.php?permissions_error=true http://google.com " au fichier .htaccess, mais cela ne fonctionne pas à cause du " ? permissions_error = true "
1
lee

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 .

2
chrisguitarguy