Erreur dans class-wp-roles.php - "array_keys() s'attend à ce que l'argument 1 soit un tableau"
P粉253518620
2023-08-30 13:11:16
<p>Il y a quelques jours, j'ai remarqué que je ne pouvais plus accéder au tableau de bord d'administration de WordPress. Je me connecterais en utilisant mon nom d’utilisateur/mot de passe d’administrateur habituel, mais je serais ensuite redirigé vers la page d’accueil du site Web au lieu du tableau de bord WordPress. Et la barre d'administration en haut de la page n'affiche pas les options habituelles pour accéder au tableau de bord ou modifier les pages, etc. Lorsque j'essaie ensuite d'accéder à wp-admin, je reçois un message d'erreur "Désolé, vous n'êtes pas autorisé à accéder à cette page."</p>
<p>Lorsque j'active wp_debug, le message d'erreur suivant s'affiche : </p>
<blockquote>
<p>Attention : array_keys() s'attend à ce que l'argument 1 soit un tableau, la chaîne donnée dans /var/www/wp-includes/class-wp-roles.php ligne 291</p>
<p>Attention : argument non valide fourni à foreach() dans /var/www/wp-includes/class-wp-roles.php à la ligne 291</p>
<p>Attention : array_keys() s'attend à ce que l'argument 1 soit un tableau, la chaîne donnée dans /var/www/wp-includes/class-wp-roles.php ligne 291</p>
<p>Attention : argument non valide fourni à foreach() dans /var/www/wp-includes/class-wp-roles.php à la ligne 291</p>
</blockquote>
<p>Cette erreur apparaît même si je désactive tous les plugins, et elle apparaît quel que soit le thème actuellement actif. Je n'ai pas trouvé beaucoup d'informations sur cette erreur dans mes recherches, et plusieurs discussions sur les rôles de classe wp sont spécifiques à certains plugins que je n'utilise pas. </p>
<p>J'ai effectué les premières vérifications normales, comme désactiver tous les plugins, vérifier wp-config.php, vérifier les autorisations de fichiers, vérifier les rôles/autorisations du compte dans phpmyadmin, et j'ai même créé un nouvel utilisateur administrateur à l'aide de phpmyadmin. J'ai également chargé le site en mode sans échec, ce qui désactive tous les plugins et utilise par défaut le thème Twenty Twenty dans WordPress. Je ne peux toujours pas accéder au tableau de bord WordPress. wp-admin.php. </p>
<p>Quelques informations supplémentaires, mon site Web utilise le thème Storefront et WooCommerce, mais comme cette erreur apparaît même lorsque les deux thèmes ne sont pas activés, cela ne devrait pas avoir d'importance, n'est-ce pas ? Mon site Web est hébergé sur GoDaddy et lorsque j'ai rencontré cette erreur pour la première fois, le site Web utilisait WordPress 6.0.3, mais hier, il a été automatiquement mis à niveau vers 6.1.1 et j'ai toujours le même problème. (J'espère vraiment que la mise à niveau résoudra ce problème.) Tout le reste sur le site semble fonctionner correctement. Je ne peux tout simplement pas accéder au tableau de bord d'administration ! Toute aide à ce sujet serait grandement appréciée. </p>
Wow, c'est tellement rapide. J'ai créé un compte Stack Overflow aujourd'hui juste pour poster cette question, et après des jours passés à me cogner la tête sur mon bureau pour essayer de comprendre cela, j'ai eu la solution en quelques heures.
Pour toute personne rencontrant des problèmes similaires, assurez-vous d'abord d'effectuer une vérification régulière pour résoudre ces problèmes, puis accédez au phpmyadmin de votre site, puis au tableau wp_options >. Recherchez l'entrée wp_user_roles. Assurez-vous qu'il contient quelque chose comme ceci :
Mon wp_user_roles définit simplement ceci sur la valeur :
Il s'avère que ce n'était pas la bonne valeur ! Je ne sais pas comment c'est arrivé. Avant cette question, je n'avais pas du tout joué avec phpmyadmin. Ce devrait être un plug-in ou quelque chose du genre. Lorsque j'ai remplacé cet AOK par la liste correcte de rôles et de fonctionnalités, j'ai immédiatement pu accéder à nouveau au tableau de bord d'administration WordPress.
Si vous utilisez WooCommerce, il y a une étape supplémentaire : vous devez désactiver et réactiver le plugin WooCommerce. En effet, il manque dans la liste des rôles ci-dessus un rôle spécifique à WooCommerce appelé « Store Manager », qui vous donne accès aux produits, aux commandes, aux analyses, aux coupons et à d'autres pages de WooCommerce.
C'est tout ! Un grand merci à @VijayHardaha pour son aide ! J'espère que ce post aidera quelqu'un d'autre un jour.