Вопрос или проблема
Я хочу дать полное разрешение пользователю-редактору на доступ к определенному плагину 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, проверьте скриншот.
но не работает.
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 использует отдельные фильтры для проверки прав доступа к страницам настройки плагинов. В результате, даже если редактор может просмотреть страницу, он может столкнуться с ограничениями при попытке сохранить изменения.
Пошаговое решение
-
Использование дополнительных фильтров
Вам потребуется использовать дополнительные фильтры, чтобы пользователи могли сохранять настройки. В документации 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. -
Структура безопасности плагинов
Ваша проблема иллюстрирует ключевой момент в безопасности плагинов: разработчики должны тестировать и обеспечивать гибкость своих фильтров, чтобы позволить администраторам сайта легко изменять возможности доступа. Стоит обсудить эту тему с разработчиками плагина Mailchimp для WordPress, чтобы они улучшили функциональность. -
Плагины управления доступом
Хотя плагины вроде Advanced Access Manager и User Role Editor могут управлять доступом до определенной степени, они не всегда решают отдельно взятые ограничения, встроенные в код специфичными фильтрами. Их эффективность ограничивает доступ к очевидным ролям и правам. Вы можете попробовать использовать плагин User Role Editor, чтобы дополнительно настроить права, но это будет работать только в рамках доступных возможностей плагина.
Заключение
Предоставление полного доступа редактору к настройкам плагина требует комплексного подхода, включающего как дополнение фильтров в код, так и понимание особенностей работы плагинов управления доступом. Если решение на основе добавления фильтров не дало результатов, возможно, стоит обратиться за дополнительной поддержкой к разработчику плагина. Для улучшения видимости данной темы в поисковых системах и облегчения помощи другим пользователям, рекомендуем также делиться опытом и решениями подобных задач на форумах WordPress и в социальных сетях.
Помните, что безопасности настройки плагинов важно уделять особое внимание, чтобы избежать потенциальных уязвимостей и сохранить целостность вашего сайта.