в многопользовательской установке WordPress, как управлять учетными записями супер администратора с полными или ограниченными возможностями - PullRequest
0 голосов
/ 27 сентября 2019

Я настраиваю многосайтовую установку WP, где я хочу, чтобы мой клиент мог управлять сайтами и пользователями, но не темами и плагинами.

Для этого у меня есть одна учетная запись Super Admin для меня, с полной мощностью, и я хотел бы иметь возможность настроить дополнительные учетные записи Super Admin, но с ограниченными возможностями.

Для этого я написал плагин mu с этим кодом:

add_action( 'edit_user_profile_update', 'customize_capabilities', 20 );
add_action( 'personal_options_update', 'customize_capabilities', 20 );
function customize_capabilities( $user_id ) {
// process only users with Super Admin role
if ( is_super_admin( $user_id ) ) {         
    $user = new WP_User( $user_id );
    // process only if user is not "mysuperadminaccount"
    if ( $user->ID !== "mysuperadminaccount" ) {            
        // remove specific Network Admin capabilities
        $user->remove_cap( 'manage_network_plugins' );
        $user->remove_cap( 'manage_network_themes' );
        $user->remove_cap( 'manage_network_options' );
        $user->remove_cap( 'upgrade_network' );
        $user->remove_cap( 'setup_network' );       
    }
}

}

Не работает, какой бы приоритет я ни дал для запуска функции.

Проблема в том, что я всегда получаю пользовательские свойства до обновления базы данных, хотя в WP doc говорится об обратном.

Поэтому, когда пользователь обновляется с «не Super Admin» до «Super»Admin ", код выполняется для" Non Super Admin ".

А когда пользователь обновляется с" Super Admin "до" Non Super Admin ", код выполняется для" Super Admin ".

Любой совет приветствуется.

...