[wp-trac] [WordPress Trac] #63440: 6.8.1 Multisite: Uncaught TypeError: array_keys(): Argument #1 ($array) must be of type array, string given in wp-includes/class-wp-roles.php:291
WordPress Trac
noreply at wordpress.org
Tue May 13 15:38:25 UTC 2025
#63440: 6.8.1 Multisite: Uncaught TypeError: array_keys(): Argument #1 ($array)
must be of type array, string given in wp-includes/class-wp-roles.php:291
-----------------------------+----------------------------------------
Reporter: thejasonator | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Role/Capability | Version:
Severity: major | Resolution:
Keywords: | Focuses: administration, multisite
-----------------------------+----------------------------------------
Changes (by sabernhardt):
* focuses: => administration, multisite
* component: Administration => Role/Capability
Old description:
> I held off upgrading to 6.8 because of the multisite issue with older
> sites. I saw that bug was fixed in 6.8.1, but on upgrading I saw this
> error:
>
> Fatal error: Uncaught TypeError: array_keys(): Argument #1 ($array) must
> be of type array, string given in /usr/local/lsws/Wordpress/htdocs/wp-
> includes/class-wp-roles.php:291 Stack trace: #0
> /usr/local/lsws/Wordpress/htdocs/wp-includes/class-wp-roles.php(291):
> array_keys() #1 /usr/local/lsws/Wordpress/htdocs/wp-includes/class-wp-
> roles.php(332): WP_Roles->init_roles() #2
> /usr/local/lsws/Wordpress/htdocs/wp-includes/ms-blogs.php(707):
> WP_Roles->for_site() #3 /usr/local/lsws/Wordpress/htdocs/wp-includes
> /class-wp-hook.php(326): wp_switch_roles_and_user() #4
> /usr/local/lsws/Wordpress/htdocs/wp-includes/class-wp-hook.php(348):
> WP_Hook->apply_filters() #5 /usr/local/lsws/Wordpress/htdocs/wp-
> includes/plugin.php(517): WP_Hook->do_action() #6
> /usr/local/lsws/Wordpress/htdocs/wp-includes/ms-blogs.php(587):
> do_action() #7 /usr/local/lsws/Wordpress/htdocs/wp-includes/admin-
> bar.php(685): switch_to_blog() #8 /usr/local/lsws/Wordpress/htdocs/wp-
> includes/class-wp-hook.php(324): wp_admin_bar_my_sites_menu() #9
> /usr/local/lsws/Wordpress/htdocs/wp-includes/class-wp-hook.php(348):
> WP_Hook->apply_filters() #10 /usr/local/lsws/Wordpress/htdocs/wp-
> includes/plugin.php(565): WP_Hook->do_action() #11
> /usr/local/lsws/Wordpress/htdocs/wp-includes/admin-bar.php(97):
> do_action_ref_array() #12 /usr/local/lsws/Wordpress/htdocs/wp-includes
> /class-wp-hook.php(324): wp_admin_bar_render() #13
> /usr/local/lsws/Wordpress/htdocs/wp-includes/class-wp-hook.php(348):
> WP_Hook->apply_filters() #14 /usr/local/lsws/Wordpress/htdocs/wp-
> includes/plugin.php(517): WP_Hook->do_action() #15
> /usr/local/lsws/Wordpress/htdocs/wp-admin/admin-header.php(277):
> do_action() #16 /usr/local/lsws/Wordpress/htdocs/wp-admin/edit-form-
> blocks.php(376): require_once('...') #17 /usr/local/lsws/Wordpress/htdocs
> /wp-admin/post.php(187): require('...') #18 {main} thrown in
> /usr/local/lsws/Wordpress/htdocs/wp-includes/class-wp-roles.php on line
> 291
>
> Strangely, the side admin bar renders, but the top admin bar doesn't.
New description:
I held off upgrading to 6.8 because of the multisite issue with older
sites. I saw that bug was fixed in 6.8.1, but on upgrading I saw this
error:
{{{
Fatal error: Uncaught TypeError: array_keys(): Argument #1 ($array) must
be of type array, string given in /.../wp-includes/class-wp-roles.php:291
Stack trace:
#0 /.../wp-includes/class-wp-roles.php(291): array_keys()
#1 /.../wp-includes/class-wp-roles.php(332): WP_Roles->init_roles()
#2 /.../wp-includes/ms-blogs.php(707): WP_Roles->for_site()
#3 /.../wp-includes/class-wp-hook.php(326): wp_switch_roles_and_user()
#4 /.../wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
#5 /.../wp-includes/plugin.php(517): WP_Hook->do_action()
#6 /.../wp-includes/ms-blogs.php(587): do_action()
#7 /.../wp-includes/admin-bar.php(685): switch_to_blog()
#8 /.../wp-includes/class-wp-hook.php(324): wp_admin_bar_my_sites_menu()
#9 /.../wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
#10 /.../wp-includes/plugin.php(565): WP_Hook->do_action()
#11 /.../wp-includes/admin-bar.php(97): do_action_ref_array()
#12 /.../wp-includes/class-wp-hook.php(324): wp_admin_bar_render()
#13 /.../wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters()
#14 /.../wp-includes/plugin.php(517): WP_Hook->do_action()
#15 /.../wp-admin/admin-header.php(277): do_action()
#16 /.../wp-admin/edit-form-blocks.php(376): require_once('...')
#17 /.../wp-admin/post.php(187): require('...')
#18 {main} thrown in /.../wp-includes/class-wp-roles.php on line 291
}}}
Strangely, the side admin bar renders, but the top admin bar doesn't.
--
Comment:
I'll move this to the "Role/Capability" component, but the issue involves
`switch_to_blog()` in the toolbar's `wp_admin_bar_my_sites_menu()`
function.
Do you find the error on any page (administration and/or front end), or is
it only certain pages?
--
Ticket URL: <https://core.trac.wordpress.org/ticket/63440#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list