如何向此REMOVE_MENU功能添加另一个用户?

时间:2011-04-10 作者:markratledge

不言而喻。如何为函数向该函数添加其他用户。php,即user2,将向谁显示与user1不同的菜单项?

我尝试添加另一个if($current_user->user_login == \'user2\') 条件,但没有运气。如果有必要,User2将拥有不同的管理权限。但基本上,我需要能够将一组菜单项显示给user1,另一组显示给user2,所以我需要找出一些if-else逻辑。但我试过了,结果菜单函数出现了“无法重新声明以前声明的”错误。

  function remove_menus()
{
    global $menu;
    global $current_user;
    get_currentuserinfo();

    if($current_user->user_login == \'user1\')
    {
        $restricted = array(
                            __(\'Links\'),
                            __(\'Comments\'),
                            __(\'Appearance\'),
                            __(\'Plugins\'),
                            __(\'Profile\'),
                            __(\'Tools\'),
                            __(\'Settings\')
        );
        end ($menu);
        while (prev($menu)){
            $value = explode(\' \',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }
        }
}

add_action(\'admin_menu\', \'remove_menus\');

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

为什么不添加另一个if?

function remove_menus(){
    global $menu;
    global $current_user;
    get_currentuserinfo();
   //check first user
    if($current_user->user_login == \'user1\'){
        $restricted = array(
                            __(\'Links\'),
                            __(\'Comments\'),
                            __(\'Appearance\'),
                            __(\'Plugins\'),
                            __(\'Profile\'),
                            __(\'Tools\'),
                            __(\'Settings\')
        );
        end ($menu);
        while (prev($menu)){
            $value = explode(\' \',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }
    }
    //check second user
    if($current_user->user_login == \'user2\'){
        $restricted = array(
                            __(\'Links\'),
                            __(\'Comments\'),
                            __(\'Appearance\'),
                            __(\'Plugins\')
        );
        end ($menu);
        while (prev($menu)){
            $value = explode(\' \',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
        }
    }

}

add_action(\'admin_menu\', \'remove_menus\');
相同的功能,但两个不同的用户将获得不同的菜单。

SO网友:t31os

你不能简单地添加一个or 进入你的条件逻辑?

if( $current_user->user_login == \'user1\' || $current_user->user_login == \'user2\' )
或者更好的方法是使用数组,这样更容易更新。。

if 上述行。。

$_menu_remove_users = array( \'user1\', \'user2\' ); 
然后将现有的if条件替换为。。

if( in_array( $current_user->user_login, $_menu_remove_users ) )
然后可以根据需要更新数组,而无需重写条件逻辑。

SO网友:kaiser

这是-a small plugin i wrote - 这很有效&;这是经过测试的。

您可以简单地上传它,并在您的functions.php 文件:

如何

# Add a user to a user group from inside your functions.php file
function test_me( $user_group_A )
{
    $user_group_A[] = \'Take your own name for testing\';

    return $user_group_A;
}
add_filter( \'user_group_A\', \'test_me\' );
如上图所示,向其中一个组添加一个(或多个)用户非常简单。修改菜单项组几乎是相同的。只需在主题函数中处理这些数组。

SO网友:Tom

看起来您试图为某些用户隐藏某些菜单项,您可以通过使用Roles and Capabilities 而不是硬编码用户名和删除菜单项。这个Capsman 该插件允许您灵活设置管理员、编辑器角色的权限,甚至可以定义新角色。如果用户没有查看设置页面的权限,则WordPress将删除管理员链接。

SO网友:bueltge

也可以使用插件Adminimize, 使用此插件,您可以轻松隐藏不同角色的菜单;还有自定义角色。如果您喜欢的话,作为自定义代码可能更容易。

结束

相关推荐

获取在Functions.php中设置的变量,并在我的Custom Post模板中回显它们

在我的函数中设置了以下函数。php文件,以允许我的自定义帖子类型“Slideshow”工作。add_action( \'the_post\', \'paginate_slide\' ); function paginate_slide( $post ) { global $pages, $multipage, $numpages; if( is_single() && get_post_type() == \'lom_s