从管理面板中隐藏特定用户的页面菜单

时间:2020-02-09 作者:Sabbir

我想从管理面板中隐藏特定用户类型的页面菜单。我用下面的代码试过了

functions.php

function hide_menu_items() {

     global $menu;
     global $current_user;
     get_currentuserinfo();

     if( $current_user->user_login == \'username\' ):
         remove_menu_page( \'admin.php?page=megamenu\' );
         remove_menu_page( \'admin.php?page=mycustompage\' );

     endif;
  }
  add_action( \'admin_menu\', \'hide_menu_items\' );
它不起作用,但只隐藏post\\u类型

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

我使用以下代码修复问题:

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

    if ( $current_user->user_login == \'username\' ) {
        remove_menu_page( \'megamenu\' );
        remove_menu_page( \'mycustompage\' );
    }
}

add_action(\'admin_menu\', \'hide_admin_menu\', 999);
只需添加页面名称即可从特定用户中删除页面

SO网友:user3135691

首先,尽你所能see in the documentation, 功能

<?php

 // is deprecated
 get_currentuserinfo();
已弃用。因此,您不应该使用它来构建新项目。

此外,您没有为函数get\\u currentuserinfo声明变量,这意味着该函数的结果在空中某处浮动,而不是声明为变量。

您应该尝试:

<?php

function hide_menu_items() {
    $user = wp_get_current_user();
    if(current_user_can(\'editor\')) {
        //The user has the "editor" role
        remove_menu_page( \'edit.php?post_type=page\' );
    }
 }
 add_action( \'admin_menu\', \'hide_menu_items\' );

?>
我已经测试了上述代码,它可以正常工作(从管理菜单中删除“页面”)。您必须根据需要调整remove\\u menu\\u page函数的url。

<?php

// can check for capability and role
current_user_can(\'something\');

?>
通常需要一个功能(例如“edit\\u posts”),但也可以接受“editor”或自定义角色等角色。

相关推荐

在wp_USERS上添加wp_usermeta的自定义SQL查询

我试图使用SQL in()查询WordPress中的用户id列表,并在wp\\u usermeta表中的meta\\u键“is\\u registered”上添加meta\\u值为“Yes”的用户id,但我似乎无法实现这一点。它只返回0个结果。如果我只将IN()与ID的数组一起使用,则效果很好。以下是我正在使用的内容:SELECT DISTINCT wp_users.ID FROM wp_users LEFT JOIN wp_usermeta ON ( wp_users.ID = wp_usermeta.