Я настраиваю многосайтовую установку 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 ".
Любой совет приветствуется.