J'ai une installation multisite sous WP 3.5. Mon site principal et quelques autres blogs sur le réseau fonctionnent bien. Cependant, si j'inscris un nouvel utilisateur et un nouveau site, cet utilisateur obtient le message "Vous ne disposez pas des autorisations suffisantes pour accéder à cette page". erreur à tout moment, ils essaient de visiter le panneau d'administration du site. La partie avant du site fonctionne correctement.
Lorsque je regarde l'utilisateur dans l'interface d'administration de réseau, il est démontré qu'il est l'administrateur de ce site. Si j'ajoute l'administrateur réseau au site, je peux afficher la zone d'administration.
J'ai essayé les suggestions habituelles de désactiver et de supprimer tous les plug-ins, d'activer le thème Twenty Twelve et de réinstaller le noyau WP. Aucun de ces travaux. Comment puis-je réparer cela?
J'ai passé plusieurs heures de mon samedi à chercher cette erreur. Je n'ai pu trouver sur Internet aucun guide décrivant ma solution éventuelle. Voici ma solution.
Dans le noyau WP, l'option "Vous ne disposez pas des autorisations suffisantes pour accéder à cette page". une erreur est générée à la fin de /wp-admin/includes/menu.php
. Une grep
de mes répertoires de plugins a également montré que plusieurs plugins pouvaient également générer cette erreur.
Faites une sauvegarde de menu.php
et remplacez le code à l'intérieur du bloc if
aux lignes 224-227 (à partir de la v3.5) par ce qui suit:
if ( !user_can_access_admin_page() ) {
$a = array(
'Pages No Access' => $_wp_menu_nopriv,
'User Info' => $current_user,
'Roles' => $wp_roles->get_names(),
);
$s = sprintf("\n<br /><pre>%s</pre>", print_r($a, true));
do_action('admin_page_access_denied');
wp_die( __('You do not have sufficient permissions to access this page.'.$s) );
}
NE PAS laisser ce code en direct sur votre site, sauf si vous êtes en train de déboguer! Remplacez-le par la sauvegarde menu.php
si vous devez vous éloigner un moment.
Essayez d'accéder à nouveau à l'administrateur. Cette page d'erreur vous dira quelques choses:
Pages No Access
définie sur 1
n'est pas accessible à l'utilisateur. Dans mon cas, toutes les pages ont été définies sur 1
.User Info
, vérifiez si l'utilisateur dispose du bon rôles et fonctionnalités . Dans mon cas, l'utilisateur avait le rôle de 10
et les fonctionnalités qu'il devrait avoir en tant qu'administrateur.Roles
, vous verrez une liste de rôles définis pour le site. Dans mon cas, je n'avais pas de rôles définis. Voici mon problème.Dans mon cas, j'ai pu parcourir ma base de données dans phpMyAdmin et rechercher l'entrée [WPDB_PREFIX]_[SITENO]_user_roles
dans la table [WPDB_PREFIX]_[SITENO]_options
. J'avais changé mon WPDB_PREFIX
, mais un plugin avait créé un rôle d'utilisateur personnalisé et l'avait écrit avec le préfixe par défaut wp_
. J'ai pu copier l'entrée d'un site de travail sur le site qui ne fonctionnait pas. Dès que je l'ai fait, l'administrateur a immédiatement pu accéder au site.
Mon installation était encore plus compliquée parce que j'utilisais le plugin nouveaux modèles de blog , et que la base de données de mon site de modèles était également corrompue de la même manière.
J'espère que ça aide.
Alors que je migrais depuis une installation multisite, le problème était dû au fait que les rôles sont nommés en fonction des noms de table. J'ai donc résolu mon problème lorsque j'ai nommé l'option wp_7_user_roles à wp_user_roles.
J'ai eu des problèmes avec cela aussi.
Ce que je voulais, c’était de donner à un utilisateur Admin mais de supprimer certains menus de la barre latérale de l’administrateur principal.
J'ai supprimé AAM parce qu'il posait des problèmes d'autorisation et j'ai utilisé Menu Editor Pro à la place. Tout fonctionne parfaitement.
Bien sûr, ce n’est pas le moyen le plus sûr d’agir à ce sujet, il permet toujours d’accéder aux pages d’administrateur masquées en tapant manuellement dans les URL, mais mon client ne sait pas comment s'y rendre de toute façon, cela fonctionne donc.
Après avoir passé en revue quelques solutions, y compris des capacités, rien ne semblait fonctionner. J'ai finalement revérifié la taille de wp_usermeta en direct par rapport à localhost wp_usermeta et j'ai constaté que le téléchargement avait été coupé et qu'il manquait certaines valeurs. Je vidai la table et chargeai de nouveau l’usermeta entière. Wordpress a fonctionné immédiatement après le téléchargement. - J'espère que ça fait gagner du temps à quelqu'un.