Вопрос или проблема
Я создаю роль Супер Админа в ролях wordpress.
$capabilities=array();
add_role('Administrator', 'Administrator', $capabilities );
add_role('Super Admin', 'Super Admin', $capabilities) );
При добавлении нового пользователя я увидел опцию роли Супер Админ. Так что я добавил Супер Пользователя.
Теперь, когда я вхожу в wp-admin, появляется ошибка:
у вас нет достаточных прав для доступа к этой странице.
Что еще мне нужно сделать, чтобы это заработало. Я не хочу использовать никакие плагины.
Я пробовал и это тоже
add_role('Super Admin', 'Super Admin',
array("manage_network","manage_sites","manage_network_users",
"manage_network_plugins","manage_network_themes","manage_network_options",
"read") );
и
add_role('Super Admin', 'Super Admin', array("manage_network"=>true,"manage_sites"=>true,
"manage_network_users"=>true,"manage_network_plugins"=>true,
"manage_network_themes"=>true,"manage_network_options"=>true,"read"=>true) );
Я хочу, чтобы этот пользователь имел доступ ко всем функциям в панели wp-admin
Лучшее решение для изменения роли и возможностей WORDPRESS – использовать плагин User Role Editor. Он простой, очень эффективный и также дает вам возможность добавлять и изменять как роли, так и возможности.
Но вы можете сделать все с помощью кода без каких-либо плагинов.
Например, вот мой класс UserRoles, который делает все это и немного больше (возможно, он не идеален, но хорошо работает). Просто задайте константные массивы с пользователями и их возможностями (ищите их здесь). Вы можете увидеть роли ‘dramatis’ и ‘free’ как примеры новых ролей.
Если вы хотите создать роль с точно такими же возможностями, как у администратора, вы можете сделать следующее:
$admin_capabilities = get_role('administrator')->capabilities;
add_role('custom_administrator', 'Custom Admin', $admin_capabilities);
Или в одном выражении:
add_role('custom_administrator', 'Custom Admin', get_role('administrator')->capabilities);
Некоторые примечания:
- Если вы не изменяете эти скопированные возможности от этого пользовательского ролика, я бы порекомендовал просто использовать стандартную встроенную роль.
- Идеально было бы поместить это в хук, чтобы он выполнялся один раз; например, в хуке активации вашего плагина или что-то подобное. (Хотя функция
add_role()
добавляет роль только в том случае, если она еще не существует, вне зависимости от того, отличаются ли переданные возможности). - “Я хочу, чтобы этот пользователь имел доступ ко всем функциям в панели wp-admin”. Если вы имели в виду, что вы хотите, чтобы новая роль могла делать все, что связано с экраном администратора, то я бы скопировал возможности роли супер администратора вместо этого.
Ответ или решение
Для того чтобы создать роль "Super Admin" с полными административными правами в WordPress, и избежать проблем с доступом в панель управления (включая ошибки, как "у вас недостаточно прав для доступа к этой странице"), необходимо создать роль корректно и назначить ей все необходимые возможности. Давайте подробно рассмотрим необходимые шаги.
1. Определение прав администратора
Чтобы ваша новая роль имела те же возможности, что и обычный администратор (или даже супер администратор, если речь идет о сетевых установках), вам нужно сначала получить права роли администратора. Вы можете сделать это следующим образом:
// Получаем все возможности роли администратора
$admin_capabilities = get_role('administrator')->capabilities;
// Добавляем новую роль с теми же возможностями
add_role('super_admin', 'Super Admin', $admin_capabilities);
Этот код можно добавить в файл functions.php
вашей темы или в кастомный плагин.
2. Проверка существования роли
Убедитесь, что вы не создаете роль, если она уже существует. Это может привести к ошибкам. Вы также можете проверить, существует ли роль, и при необходимости удалить её перед созданием:
if (null !== get_role('super_admin')) {
remove_role('super_admin');
}
add_role('super_admin', 'Super Admin', $admin_capabilities);
3. Проверка прав сети (если используется мультисайтовая установка)
Для мультисайтовых установок WordPress вам может понадобиться установить права сети. Это может включать в себя добавление следующих возможностей:
$capabilities = array(
"manage_network",
"manage_sites",
"manage_network_users",
"manage_network_plugins",
"manage_network_themes",
"manage_network_options",
"read",
);
$admin_capabilities = array_merge($admin_capabilities, array_flip($capabilities));
4. Внедрение кода
Чтобы убедиться, что всё работает корректно, убедитесь, что ваш код помещен в правильное место. Оптимально использовать хуки активации плагина или хуки темы:
function create_super_admin_role() {
// Логика создания роли
}
add_action('after_switch_theme', 'create_super_admin_role'); // или 'plugin_activation' для плагина
Заключение
После того как вы добавите роль "Super Admin" с необходимыми правами, убедитесь, что вы можете назначить эту роль новым пользователям и что вы сами можете войти в админку под данной ролью без ошибок доступа. Если при попытке входа всё равно возникают проблемы, стоит проверить другие плагины или настройки безопасности, которые могут влиять на доступ к админ-панели.
Основные моменты:
- Создайте роль с правильными правами.
- Избегайте создания дублирующих ролей.
- Проверьте наличие конфликтующих плагинов.
Эти шаги должны помочь вам успешно создать и настроить новую роль "Super Admin" в WordPress без использования сторонних плагинов.