Я использую плагин WordPress Диспетчер доступа пользователей (UAM) он обрабатывает роли, группы пользователей и предоставляет пользователю доступ к одной или нескольким группам.
Этот плагин не использует стандарт wp_capabilities
ролей, поэтому невозможно экспортировать отношения ролей / групп через обычный плагин экспорта CSV, такой как Экспорт пользователей в CSV плагин.
Поэтому я пытаюсь взаимодействовать с плагином UAM через его интерфейс API и / или WP-CLI:
private function userAccessGroups() {
global $userAccessManager;
//use UserAccessManager\ObjectMembership\UserMembershipHandler;
// get a reference to the UserGroupHandler
$userGroupHandler = $userAccessManager->getUserGroupHandler();
$objectHandler = $userAccessManager->getObjectHandler();
// get a reference to the UserMembershipHandler
$objectType = \UserAccessManager\Object\ObjectHandler::GENERAL_USER_OBJECT_TYPE;
$userMembershipHandler = $objectHandler->getObjectMembershipHandler($objectType);
$allUsers=[];
// get all user groups
$userGroups = $userGroupHandler->getUserGroups();
if (count($userGroups) > 0) { // has user groups
foreach ($userGroups as $userGroup) {
// get all users in a group
// getFullObjects(AbstractUserGroup $userGroup, $lockRecursive, $objectType = null)
// https://github.com/GM-Alex/user-access-manager/blob/master/src/ObjectMembership/UserMembershipHandler.php#L151
$users = $userMembershipHandler->getFullObjects($userGroup, true, $objectType);
$allUsers = array_merge($allUsers, $users);
}
}
//var_dump( $allUsers );
return $allUsers;
}
и я добавил эту функцию в хук экспорта WP. Функция работает, но я не могу получить доступ к группам пользователей, как ожидалось. Плагин UAM имеет свою собственную базу данных, но я предпочитаю пройти через API плагина, который частично документирован в UAM Wiki — фрагменты кода
Я также попробовал этот альтернативный способ в соответствии с документами
$users = $userGroup->getFullUsers();
foreach($users as $user) {
var_dump($user);
}
Но я все еще получаю массив пользователей без данных.
Задача ещё не решена.
Других решений пока нет …