Push roles removes existing roles
-
We use the WP-Cassify setting “Push defaults roles to connected user” (with “Purge user roles before applying rules” unchecked) to set:
subscriber|1|
which adds the user as a subscriber on the main site when they hit wp-admin on the child site.
As of 2.4.2 I notice blog admins are having their admin role removed (and the subscriber role added). The removal causes problems for them, of course.
This does not happen in wp-cassify version 2.3.9, 2.4.0, or 2.4.1
For context, this happens when I test in this sequence:- As network admin, make sure the child blog has one admin who is not yourself. Archive the child blog.
- Navigate to the child blog dashboard (wp-admin) and using user-switching to switch to being that admin user.
- Refresh the dashboard – the role is removed here.
My setup is a WP multisite (subfolders).Here’s a backtrace from an mu-plugins file:
USERMETA updated user_id=4002 key=2803_capabilities val=Array( [subscriber] => 1 )
backtrace=Array
(
[0] => Array
(
[file] => wp-includes/class-wp-hook.php
[line] => 341
[function] => {closure}
)
[1] => Array
(
[file] => wp-includes/class-wp-hook.php
[line] => 365
[function] => apply_filters
[class] => WP_Hook
[type] => ->
)
[2] => Array
(
[file] => wp-includes/plugin.php
[line] => 522
[function] => do_action
[class] => WP_Hook
[type] => ->
)
[3] => Array
(
[file] => wp-includes/meta.php
[line] => 353
[function] => do_action
)
[4] => Array
(
[file] => wp-includes/user.php
[line] => 1310
[function] => update_metadata
)
[5] => Array
(
[file] => wp-includes/class-wp-user.php
[line] => 635
[function] => update_user_meta
)
[6] => Array
(
[file] => wp-includes/ms-functions.php
[line] => 200
[function] => set_role
[class] => WP_User
[type] => ->
)
[7] => Array
(
[file] => wp-content/plugins/wp-cassify/classes/wp_cassify_plugin.php
[line] => 425
[function] => add_user_to_blog
)
[8] => Array
(
[file] => wp-includes/class-wp-hook.php
[line] => 341
[function] => wp_cassify_grab_service_ticket
[class] => wp_cassify\WP_Cassify_Plugin
[type] => ->
…
ROLE CHANGE set_user_role user_id=4002 role=subscriber old_roles=["administrator"] backtrace=Array
(
[0] => Array
(
[file] => wp-includes/class-wp-hook.php
[line] => 341
[function] => {closure}
)
[1] => Array
(
[file] => wp-includes/class-wp-hook.php
[line] => 365
[function] => apply_filters
[class] => WP_Hook
[type] => ->
)
[2] => Array
(
[file] => wp-includes/plugin.php
[line] => 522
[function] => do_action
[class] => WP_Hook
[type] => ->
)
[3] => Array
(
[file] => wp-includes/class-wp-user.php
[line] => 663
[function] => do_action
)
[4] => Array
(
[file] => wp-includes/ms-functions.php
[line] => 200
[function] => set_role
[class] => WP_User
[type] => ->
)
[5] => Array
(
[file] => wp-content/plugins/wp-cassify/classes/wp_cassify_plugin.php
[line] => 425
[function] => add_user_to_blog
)
[6] => Array
(
[file] => wp-includes/class-wp-hook.php
[line] => 341
[function] => wp_cassify_grab_service_ticket
[class] => wp_cassify\WP_Cassify_Plugin
[type] => ->
)
[7] => Array
(
[file] => wp-includes/class-wp-hook.php
[line] => 365
[function] => apply_filters
[class] => WP_Hook
[type] => ->
)
[8] => Array
(
[file] => wp-includes/plugin.php
[line] => 522
[function] => do_action
[class] => WP_Hook
[type] => ->
)
[9] => Array
(
[file] => wp-settings.php
[line] => 764
[function] => do_action
)Code to generate that backtrace:
add_action('set_user_role', function($user_id, $role, $old_roles){
error_log("ROLE CHANGE set_user_role user_id=$user_id role=$role old_roles="
. json_encode($old_roles)
. " bt=" . print_r(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), true));
}, 10, 3);
add_action('updated_user_meta', function($meta_id, $user_id, $meta_key, $meta_value){
if (strpos($meta_key, 'capabilities') !== false) {
error_log("USERMETA updated user_id=$user_id key=$meta_key val="
. print_r($meta_value, true)
. " bt=" . print_r(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), true));
}
}, 10, 4);
Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
You must be logged in to reply to this topic.