允许编辑者用户具有访问插件设置的完全权限

时间:2020-03-04 作者:thecodedeveloper.com

我想授予编辑器用户访问特定插件MC4WP:Mailchimp for WordPress的完全权限https://wordpress.org/plugins/mailchimp-for-wp/

为其添加了以下功能代码。子主题文件夹中的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

WordPress的MailChimp提供了一系列操作和过滤器挂钩-https://github.com/ibericode/mc4wp-snippets/blob/master/hooks.md

1 个回复
SO网友:Jacob Peattie

这是原始插件的问题。显然,他们从未真正测试过这个过滤器。他们使用了mc4wp_admin_required_capability 要控制管理页面是否可访问,但WordPress仍阻止您保存设置,除非同时使用此筛选器:

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

您应该联系插件作者并要求他们修复此问题,但在此期间,您可以自己实现此功能。假设this 插件是否有问题,这应该可以:

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)等插件授予对插件设置的完全访问权限,则原始插件没有以非常安全的方式实现设置。

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。