Разрешить пользователю редактора полный доступ к настройкам плагина.

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

Я хочу дать полное разрешение пользователю-редактору на доступ к определенному плагину MC4WP: Mailchimp for WordPress https://wordpress.org/plugins/mailchimp-for-wp/

Для этого добавил нижеприведенный код в файл functions.php, который находится в папке дочерней темы

add_filter('mc4wp_admin_required_capability', function($capability) 
{
    return 'edit_pages';
});

Редактор может получить доступ к плагину mailchimp, но если пользователь-редактор пытается нажать кнопку сохранения для сохранения ключа API в настройке плагина, то возникает ошибка.

Вам нужно более высокий уровень разрешения. Извините, вам не разрешено
управлять настройками этого сайта.

Я использую плагин Advanced Access Manager https://wordpress.org/plugins/advanced-access-manager/, в настройке плагина я предоставил полное разрешение пользователю-редактору для плагина mailchimp, проверьте скриншот.

но не работает.

enter image description here

MailChimp for WordPress имеет множество хуков действий и фильтров – https://github.com/ibericode/mc4wp-snippets/blob/master/hooks.md

Это проблема оригинального плагина. Очевидно, они никогда не тестировали этот фильтр. Они использовали mc4wp_admin_required_capability для контроля доступа к административной странице, но WordPress все равно не позволяет сохранять настройки, если этот фильтр также не используется:

https://developer.wordpress.org/reference/hooks/option_page_capability_option_page

Вы должны связаться с автором плагина и попросить их исправить это, но тем временем вы можете внедрить это самостоятельно. Предполагая, что это тот плагин, о котором идет речь, это должно работать:

add_filter(
    'option_page_capability_mc4wp_settings',
    function( $capability ) {
        return 'edit_pages';
    }
);

Возможно, вам также потребуется это для сохранения настроек “Интеграции”.

add_filter(
    'option_page_capability_ mc4wp_integrations_settings',
    function( $capability ) {
        return 'edit_pages';
    }
);

Такие плагины, как “Advanced Access Manager”, обычно не помогают в этом, потому что единственный способ узнать, возможны ли эти фильтры – это прочитать код плагина, поэтому такие плагины довольно бесполезны. Они могут видеть только, какие меню админки зарегистрированы, и какие роли пользователей зарегистрированы, потому что они объявлены заранее. Они не могут действительно контролировать, как плагин использует роли и возможности, без проверки кода каждого плагина и внедрения решений вручную.

Если возможно предоставить полный доступ к настройкам плагина с помощью плагина типа Advanced Access Manager, значит, оригинальный плагин не реализовал настройки должным образом.

Вы можете попробовать плагин User Role Editor, он позволит вам легко отредактировать роль пользователя и предоставить необходимый доступ.

Спасибо! 🙂

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

Для предоставления полного доступа пользователю с ролью редактора к настройкам плагина MC4WP: Mailchimp for WordPress, вам необходимо учитывать несколько факторов. Прежде всего, давайте рассмотрим сценарий, с которым вы столкнулись: вы внесли изменения в файл functions.php вашей дочерней темы, добавив фильтр mc4wp_admin_required_capability, который позволяет пользователям с правами edit_pages получить доступ к административной части плагина Mailchimp. Однако при попытке сохранить настройки API ключа возникают проблемы с правами доступа.

Описание проблемы

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

Пошаговое решение

  1. Использование дополнительных фильтров
    Вам потребуется использовать дополнительные фильтры, чтобы пользователи могли сохранять настройки. В документации WordPress упоминается фильтр option_page_capability_{option_page}, который управляет правами доступа для сохранения настроек плагинов. Вы можете добавить следующие строки в ваш файл functions.php:

    add_filter(
       'option_page_capability_mc4wp_settings',
       function( $capability ) {
           return 'edit_pages';
       }
    );
    
    add_filter(
       'option_page_capability_mc4wp_integrations_settings',
       function( $capability ) {
           return 'edit_pages';
       }
    );

    Эти фильтры позволяют пользователям с правами edit_pages сохранять изменения как в основных настройках, так и в настройках интеграций MC4WP.

  2. Структура безопасности плагинов
    Ваша проблема иллюстрирует ключевой момент в безопасности плагинов: разработчики должны тестировать и обеспечивать гибкость своих фильтров, чтобы позволить администраторам сайта легко изменять возможности доступа. Стоит обсудить эту тему с разработчиками плагина Mailchimp для WordPress, чтобы они улучшили функциональность.

  3. Плагины управления доступом
    Хотя плагины вроде Advanced Access Manager и User Role Editor могут управлять доступом до определенной степени, они не всегда решают отдельно взятые ограничения, встроенные в код специфичными фильтрами. Их эффективность ограничивает доступ к очевидным ролям и правам. Вы можете попробовать использовать плагин User Role Editor, чтобы дополнительно настроить права, но это будет работать только в рамках доступных возможностей плагина.

Заключение

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

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

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

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