A few days ago I noticed that I could no longer access the admin dashboard in WordPress. I would log in with my normal admin username/password but then I get redirected to the website homepage instead of the WordPress dashboard. And the admin bar at the top of the page did not display the usual options to go to the dashboard or edit the page, etc. When I then tried to go to wp-admin after that, I got an error saying "Sorry, you are not allowed to access this page."
When I enabled wp_debug, I started seeing the following error message:
Warning: array_keys() expects parameter 1 to be array, string given in /var/www/wp-includes/class-wp-roles.php on line 291
Warning: Invalid argument supplied for foreach() in /var/www/wp-includes/class-wp-roles.php on line 291
Warning: array_keys() expects parameter 1 to be array, string given in /var/www/wp-includes/class-wp-roles.php on line 291
Warning: Invalid argument supplied for foreach() in /var/www/wp-includes/class-wp-roles.php on line 291
This error displays even when I have disabled all plugins, and it displays no matter which theme is currently active. I couldn't find much about this error in my searching, and the few threads about class-wp-roles are specific to certain plugins which I don't use.
I did the normal first-checks, like turning off all my plugins, checking wp-config.php, checking file permissions, checking the account role/privileges in phpmyadmin and I even created a new admin user using phpmyadmin. I also loaded the site in "Safe mode" which disables all plugins and defaults to the "Twenty twenty" theme in WordPress. Still no luck accessing the WordPress dashboard ie. wp-admin.php.
Some additional information, my site uses the Storefront theme and WooCommerce, but since this error displays even when both of those are not active, that shouldn't matter, right? My site is hosted on GoDaddy and when I first encountered this error, the site was using WordPress 6.0.3 but yesterday it automatically upgraded to 6.1.1, but I'm still having the same problem. (I was really hoping the upgrade would fix this issue.) Everything else with the website seems to be working fine. I just cannot access the admin dashboard! Any help with this is greatly appreciated.
Wow that was fast. I basically created a Stack Overflow account today just to post this question, after days of banging my head against the desk trying to figure this out, and I got the solution in a few hours.
For those who are experiencing a similar issue, definitely go through the regular checks to rule those out first, but then, go to phpmyadmin for your site and then the wp_options table. Look for the wp_user_roles entry. Make sure it has something like this:
a:5:{s:13:"administrator";a:2:{s:4:"name";s:13:"Administrator";s:12:"capabilities";a:61:{s:13:"switch_themes";b:1;s:11:"edit_themes";b:1;s:16:"activate_plugins";b:1;s:12:"edit_plugins";b:1;s:10:"edit_users";b:1;s:10:"edit_files";b:1;s:14:"manage_options";b:1;s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:6:"import";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:8:"level_10";b:1;s:7:"level_9";b:1;s:7:"level_8";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;s:12:"delete_users";b:1;s:12:"create_users";b:1;s:17:"unfiltered_upload";b:1;s:14:"edit_dashboard";b:1;s:14:"update_plugins";b:1;s:14:"delete_plugins";b:1;s:15:"install_plugins";b:1;s:13:"update_themes";b:1;s:14:"install_themes";b:1;s:11:"update_core";b:1;s:10:"list_users";b:1;s:12:"remove_users";b:1;s:13:"promote_users";b:1;s:18:"edit_theme_options";b:1;s:13:"delete_themes";b:1;s:6:"export";b:1;}}s:6:"editor";a:2:{s:4:"name";s:6:"Editor";s:12:"capabilities";a:34:{s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;}}s:6:"author";a:2:{s:4:"name";s:6:"Author";s:12:"capabilities";a:10:{s:12:"upload_files";b:1;s:10:"edit_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:4:"read";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;s:22:"delete_published_posts";b:1;}}s:11:"contributor";a:2:{s:4:"name";s:11:"Contributor";s:12:"capabilities";a:5:{s:10:"edit_posts";b:1;s:4:"read";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;}}s:10:"subscriber";a:2:{s:4:"name";s:10:"Subscriber";s:12:"capabilities";a:2:{s:4:"read";b:1;s:7:"level_0";b:1;}}}
My wp_user_roles literally just had this set as the value:
AOK
It turns out that's the wrong value! I have no idea how that happened. Before this issue, I was not messing around in phpmyadmin at all. It must have been a plugin or something. When I replaced that AOK with the correct list of roles and capabilities, I was immediately able to access the WordPress admin dashboard again.
If you are using WooCommerce, there is one additional step: You need to de-activate and then re-activate the WooCommerce plugin. This is because that list of roles above is missing a role specific to WooCommerce called "Shop Manager" which gives you access to WooCommerce's Products, Orders, Analytics, Coupons, etc pages.
That was it! Huge props to @VijayHardaha for their help in resolving this issue! I hope this thread helps somebody else out someday.
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Find the answer in similar questions on our website.
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.
PHP (from the English Hypertext Preprocessor - hypertext preprocessor) is a scripting programming language for developing web applications. Supported by most hosting providers, it is one of the most popular tools for creating dynamic websites.
The PHP scripting language has gained wide popularity due to its processing speed, simplicity, cross-platform, functionality and distribution of source codes under its own license.
https://www.php.net/
HTML (English "hyper text markup language" - hypertext markup language) is a special markup language that is used to create sites on the Internet.
Browsers understand html perfectly and can interpret it in an understandable way. In general, any page on the site is html-code, which the browser translates into a user-friendly form. By the way, the code of any page is available to everyone.
https://www.w3.org/html/
Welcome to the Q&A site for web developers. Here you can ask a question about the problem you are facing and get answers from other experts. We have created a user-friendly interface so that you can quickly and free of charge ask a question about a web programming problem. We also invite other experts to join our community and help other members who ask questions. In addition, you can use our search for questions with a solution.
Ask about the real problem you are facing. Describe in detail what you are doing and what you want to achieve.
Our goal is to create a strong community in which everyone will support each other. If you find a question and know the answer to it, help others with your knowledge.