Добавьте роль и дайте права администратора.

Вопрос или проблема

Я создаю роль Супер Админа в ролях 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 без использования сторонних плагинов.

Оцените материал
Добавить комментарий

Капча загружается...