• 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.