2017-08-24 4 views
1

Un de mes clients utilise un site wordpress avec Woocommerce. On m'a récemment demandé de me connecter en tant qu'un de leurs utilisateurs, afin de reproduire un problème. Ce que j'ai trouvé, c'est que je peux taper/wp-admin et cela me prend juste pour le panneau d'administration complet et j'ai tous les mêmes éléments de menu en tant qu'administrateur. Ceci est évidemment très sérieux car si l'un des utilisateurs s'en aperçoit, il pourrait faire baisser le site s'il le voulait.Wordpress: Pourquoi les abonnés peuvent-ils voir le panneau d'administration?

Pour tenter de les bloquer, j'ai placé le script suivant dans le fichier functions.php:

// Redirect non-admins away from wp-admin 
add_action('init', 'blockusers_init'); 

function blockusers_init() { 
    $current_user = wp_get_current_user(); 

    if (is_admin() && ! current_user_can('administrator') && ! (defined('DOING_AJAX') && DOING_AJAX)) { 
     wp_redirect(home_url()); 
     exit; 
    } 
} 

Une fois connecté en tant qu'utilisateur qui a un rôle de « abonné », current_user_can (« administrateur » renvoie false si je suis sur le front-end du site, et il renvoie vrai si je vais dans/wp-admin.

Étant donné que l'utilisateur actuel n'est qu'un abonné, j'imagine qu'il doit retourner false partout. Je suis un peu coincé avec ça ... et je ne sais pas ce que je devrais regarder après. (J'ai essayé les trucs habituels comme désactiver tous les plugins, mais le problème est toujours là). Est-ce que vous avez une idée de ce que je devrais essayer?

+0

avez-vous cliqué sur le panneau d'administration et vérifié qu'il s'agit bien du panneau d'administration et non du panneau d'administration des paramètres personnels? –

+0

Avez-vous vérifié l'option "Nouvel utilisateur par défaut" dans les paramètres généraux? – JazZ

Répondre

0

La cause du problème ci-dessus était un hack dans le site. J'ai trouvé des fichiers dans le dossier racine qui n'auraient pas dû être là. Le correctif temporaire consistait à supprimer wp-admin et wp-includes et à copier les dossiers à partir d'une nouvelle installation. Maintenant, les abonnés ne peuvent plus voir le panneau d'administration, et il redirige vers le front-end comme il se doit. Maintenant, je dois scanner le dossier des plugins pour voir si je trouve autre chose.

0

Votre chèque est incorrect. Vous faites !wp_admin(). C'est vrai quand vous êtes pas dans le panneau d'administration, ce qui est exactement à l'opposé de ce que vous voulez.

add_action('init', 'blockusers_init'); 

function blockusers_init() 
{ 
    if (is_admin() && !current_user_can('administrator') && !(defined('DOING_AJAX') && DOING_AJAX)) 
    { 
     wp_redirect(home_url()); 
     exit; 
    } 
} 

Notez qu'il peut être current_user_can('subscriber') pour cibler uniquement les abonnés, ou !current_user_can('administrator') de cibler tous les non administrateurs, ce qui signifie éditeurs, collaborateurs, etc.

situation dans son ensemble est étrange cependant. Normalement, un abonné peut accéder au panneau d'administration, mais il ne peut voir que le tableau de bord et son profil. S'ils peuvent en fait voir le panneau d'administration entier, vous devriez étudier la cause, car c'est anormal.
P.S. Etes-vous sûr qu'ils ne vous ont pas donné de compte administrateur au lieu de vous abonner pour enquêter?

+0

Salut, oui vous avez absolument raison. Le '! 'était là par erreur. Je ne l'ai pas réellement dans mon code. Je suis sûr que l'utilisateur était un abonné, et j'ai créé un autre utilisateur afin que je puisse tester et le résultat est le même: tous les utilisateurs peuvent accéder à tous les éléments du menu d'administration. Et oui, toute la situation est bizarre. Des suggestions sur ce qui pourrait causer ce comportement étrange? – user3015234

+0

@ user3015234 Aucune suggestion précise, puisque je n'ai aucune idée du type de plugins et de thème qu'ils utilisent. Mais je suppose qu'un bon début serait de désactiver les plugins un par un et de voir si cela change quelque chose, puis de changer de thème. Si cela vous aide, vous saurez au moins où chercher plus loin. Vérifiez également si le nouveau rôle par défaut dans les paramètres est abonné et non quelque chose d'autre. –