Вы можете написать плагин, который использует фильтр-ловушку «all_plugins» для удаления из массива плагинов, которые вы не хотите отображать для определенного пользователя. Примерно так:
$plugin_credentials = array(
'bob' => array(
'Hello Dolly' => 1
),
'jim' => array(
'Akismet' => 1,
'Hello Dolly' => 1,
),
'admin' => "**ALL**"
);
function plugin_permissions($plugins)
{
global $current_user, $plugin_credentials;
$username = $current_user->user_login;
if ($plugin_credentials[$username] == "**ALL**")
return $plugins;
$viewable_plugins = array();
foreach ($plugins as $plugin) {
if (isset($plugin_credentials[$username]) &&
isset($plugin_credentials[$username][$plugin['Name']]) &&
$plugin_credentials[$username][$plugin['Name']] == 1) {
array_push($viewable_plugins, $plugin);
}
}
return $viewable_plugins;
}
add_filter('all_plugins', 'plugin_permissions');
Управление правами пользователей в самом плагине не идеально, но, вероятно, проще всего. Вы можете расширить эту идею, создавая страницы администратора для управления пользователями и их просматриваемыми плагинами в таблице базы данных где-то.