WordPress – Ограничить пользовательскую/специфическую роль доступа только к редактированию содержимого страницы параметров Advanced Custom Fields Pro.

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

Я уже пробовал несколько плагинов для ролей: Members, User Role Editor, User Role Field Setting для Advanced Custom Fields Pro (это не относится к странице настроек — только к полям ACF сами по себе), Capability Manager Enhanced, и я не смог настроить их для целевой страницы Опций, которую я создал для сайта в functions.php:

$acf_args = array(
    'page_title' => 'Редактируемый контент',
    'menu_slug' => 'editable-content',
    'capability' => 'manage_options'
);

acf_add_options_page( $acf_args );

Я пытался добавить атрибут capability, но это, похоже, не позволяло конкретной роли пользователя ориентироваться только на страницу Опций. Любая роль пользователя может получить доступ к странице Опций — но только указанная роль может редактировать страницу Опций и ничего более в админке. (Ничего страшного, если этот указанный пользователь может просматривать страницы, записи, плагины и т.д. — но они не могут редактировать, добавлять, обновлять или удалять что-либо).

Есть ли способ, как я могу это сделать? Могу ли я как-то использовать один из вышеупомянутых плагинов, а также дополнительный код в functions.php? Или я ограничен только добавлением чего-то в functions.php? Я раньше работал с ролями пользователей WordPress в базовом понимании, но не в такой конкретной форме, как сейчас….

Итак, я нашел плагин под названием Adminimize https://wordpress.org/plugins/adminimize/, который позволяет мне показывать/скрывать элементы меню админки на основе ролей пользователей. Это позволило мне сделать страницу Опций редактируемой для созданной мною пользовательской роли, но запретило им редактировать другие части сайта.

Ответ или решение

Для решения вашей задачи по ограничению прав доступа для конкретной пользовательской роли на редактирование содержимого страницы опций Advanced Custom Fields Pro в WordPress можно использовать комбинацию пользовательских возможностей и настроек плагинов. Ваша цель состоит в том, чтобы одна специфическая роль могла редактировать только вашу страницу опций, но не имела доступ к другим административным функциям.

Пошаговое руководство

1. Создание пользовательской роли

Первоочередная задача — создать пользовательскую роль с ограниченными правами. Вы можете сделать это с помощью плагина User Role Editor или программно в файле functions.php. Вот пример кода для создания пользовательской роли:

add_action('init', 'add_custom_user_role');
function add_custom_user_role() {
    add_role('custom_editor', 'Custom Editor', array(
        'read' => true, // Доступ позволяет только чтение
        'edit_posts' => false,
        'delete_posts' => false,
        'edit_pages' => false,
        'delete_pages' => false,
        // Добавьте другие возможности, если необходимо.
    ));
}

2. Настройка прав для страницы опций ACF

Теперь, когда у вас есть пользовательская роль, необходимо разрешить ей доступ только к странице опций. В вашем коде для добавления страницы опций ACF вам необходимо изменить параметр capability и добавить коды, управляющие доступом:

$acf_args = array(
    'page_title' => 'Editable Content',
    'menu_slug' => 'editable-content',
    'capability' => 'edit_custom_content' // Указываем сюда кастомную возможность
);

acf_add_options_page($acf_args);

Затем создайте эту возможность для вашей пользовательской роли:

add_action('admin_init', 'add_custom_capability');
function add_custom_capability() {
    $role = get_role('custom_editor');
    if ($role) {
        $role->add_cap('edit_custom_content'); // Предоставляем возможность редактирования контента
    }
}

3. Скрытие других разделов админ-панели

Чтобы пользователь с этой ролью не мог редактировать другие части сайта, можно использовать плагин Adminimize или аналогичный. Этот плагин позволяет настраивать видимость отдельных элементов меню в админ-панели, исключая доступ к нежелательным разделам. Убедитесь, что вы настроили его правильно, чтобы скрыть все разделы, кроме вашей страницы опций.

4. Проверка работоспособности

После выполнения всех вышеописанных шагов проверьте работоспособность настройек. Создайте пользователя с назначенной ролью Custom Editor и убедитесь, что он может редактировать только страницу опций. При необходимости вы можете дополнительно настроить права доступа, используя возможности, предоставляемые плагинами для управления правами пользователей.

Заключение

С помощью описанных шагов вы сможете создать специфическую пользовательскую роль, которая будет обладать доступом только к определенной странице опций ACF, не имея возможности редактировать другие аспекты сайта. Использование комбинации пользовательского кода и плагинов, таких как Adminimize, обеспечит вам необходимый уровень контроля и безопасности. Если у вас возникнут дополнительные вопросы или потребуется помощь в реализации, не стесняйтесь обращаться за поддержкой.

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

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