Restrict role to use a plugin

时间:2017-11-27 作者:jayprod

我想删除一个贡献者角色的插件,或者只是让它不可访问。我有一个类似情况的代码:

add_filter( \'option_active_plugins\', \'disable_logged_in_plugin\' );
function disable_logged_in_plugin( $plugins ) {
    // The \'option_active_plugins\' hook occurs before any user information get generated,
    // so we need to require this file early to be able to check for logged in status
    require (ABSPATH . WPINC . \'/pluggable.php\');
    // If we are logged in, and NOT an admin...
    if ( current_user_can(\'contributor\') & !is_admin() ) {
        // Use the plugin folder and main file name here.
        // is used here as an example
           $plugins_not_needed = array (\'/metabox/meta-box.php\');
            foreach ( $plugins_not_needed as $plugin ) {
                $key = array_search( $plugin, $plugins );
                if ( false !== $key ) {
                    unset( $plugins[ $key ] );
                }
            }
       PHP            return $plugins;
    }
我对php没有任何经验,但我如何理解这个问题,因为他们在管理区内?(我允许他们注册和发布,但他们不是管理员)。

如果贡献者在管理区域内,我如何关闭他们的特定插件?

1 个回复
最合适的回答,由SO网友:Greg36 整理而成

您当前的代码为使用contributor 非管理页面上的功能。这个is_admin() function 检查当前页面是否为“/wp admin”页面,若要仅在管理页面上禁用插件,请将此条件更改为:

if ( current_user_can( \'contributor\' ) && is_admin() ) {

但要使此代码正常工作,您需要将其放入Must-Use plugin, 比所有插件更早加载它。简而言之,直接在内部创建新的PHP文件/wp-content/mu-plugins 目录,添加required header 信息,并使用我上面提到的更改添加您的代码。

或者,您可以使用如下插件Adminimize 并对指定的用户组禁用仪表板的某些部分。

结束

相关推荐

如何使用phpMyAdmin替换WordPress数据库中的值

我试图使用phpmyadmin在cg\\U选项行/字段中保存一个值,但数据存储不正确,保存后再次加载时,只显示部分数据。我是否需要在phpmyadmin中使用转换函数?该行为theme\\u mods\\u[主题名称]这是字段中包含的数据示例:s:19:\"thim_my_text_option\" s:0:\"\" s:30:\"thim_display_login_menu_mobile\" b:0 s:25:\"thim_body_secondary_color\"&