Вопрос или проблема
Привет, я хотел узнать, есть ли способ ограничить доступ к определенным плагинам для определенного администратора.
Например, я хочу, чтобы на моем сайте был второй администратор, и чтобы он мог получать доступ ко всем плагинам, кроме одного. Есть ли способ сделать это?
Я думаю, что этот код предотвратит доступ определенных пользователей к любой части административной зоны (не тестировался):
add_filter('admin_menu', 'block_users');
function block_users() {
$current_user = wp_get_current_user(); // получить объект текущего пользователя
$allowed_user="[email protected]"; // изменить на электронную почту разрешенного пользователя
if (! $current_user->user_login == $allowed_user) {
wp_redirect(admin_url()); // перенаправить на панель управления
exit; // выйти, если был выполнен переход
}
return;
}
Не уверен, какой хук использовать для получения доступа к экрану настроек плагина или другим областям меню администратора (если вы хотите заблокировать все настройки плагинов).
Вы можете разместить что-то похожее в начале кода вашего плагина, чтобы предотвратить доступ к конкретному плагину. Просто измените адрес электронной почты учетной записи, которую хотите заблокировать. Вы можете настроить значение, которое хотите искать, используя другие элементы массива $current_user (см. https://codex.wordpress.org/wp_get_current_user).
Возможно, это поможет вам начать двигаться в правильном направлении.
Ответ или решение
Как ограничить доступ второго администратора к определенным плагинам в WordPress
Если вы хотите дать второму администратору права на управление всеми плагинами, за исключением одного, вам понадобится использовать немного кода и несколько фильтров WordPress. Давайте рассмотрим, как это сделать поэтапно.
1. Использование пользовательских ролей и прав
В WordPress существует гибкая система ролей и прав, которая позволяет вам настраивать доступ для различных пользователей на вашем сайте. Однако, стандартные роли, такие как "Администратор", имеют всеобъемлющие права доступа. Поэтому для достижения ваших целей потребуется более детальное решение.
2. Настройка кода
Для того чтобы ограничить доступ к конкретному плагину, вам понадобится использовать фильтрацию меню администратора. Вот пример кода, который можно добавить в файл вашей темы functions.php
или создать отдельный плагин.
add_action('admin_menu', 'restrict_admin_access');
function restrict_admin_access() {
// Получаем текущего пользователя
$current_user = wp_get_current_user();
// Задайте email администратора, у которого будет полный доступ
$allowed_user_email = 'allowed@example.com'; // Замените на email вашего разрешенного администратора
// Сравниваем email текущего пользователя с разрешенным
if ($current_user->user_email !== $allowed_user_email) {
// Проверяем, если данный плагин должен быть скрыт
remove_menu_page('plugin_slug'); // Замените 'plugin_slug' на соответствующий слаг вашего плагина
}
}
3. Примечания к коду
- Замените
allowed@example.com
на реальный email вашего главного администратора, который должен иметь полный доступ. - Замените
plugin_slug
на слаг конкретного плагина, доступ к настройкам которого вы хотите ограничить. Обычно он указан в URL-адресе страницы настроек плагина.
4. Дополнительные меры
Если плагин предлагает интерфейс настроек в админке, его доступ также можно ограничить через фильтры. Например, вы можете дополнительно использовать следующие проверки на уровне конкретного плагина:
if ($current_user->user_email !== $allowed_user_email) {
// Показать сообщение об ошибке или перенаправить пользователя
wp_die('У вас нет доступа к этой странице.');
}
5. Проверка
После того как вы добавите необходимый код, проверьте функциональность с помощью учетной записи второго администратора. Убедитесь, что доступ к плагину действительно ограничен, а все остальные функции администрирования доступны.
Заключение
Ограничение доступа к определенным плагинам для второго администратора в WordPress — это задача, которую можно решить с помощью настройки ролей и прав доступа. Элементы кода, приведенные выше, являются основой для достижения этой цели. При необходимости, вы всегда можете вносить изменения, дополнять и улучшать подход в зависимости от ваших нужд. С таким подходом, вы сможете создать безопасное и управляемое администрирование вашего сайта.