【问题标题】:Unable to remove some menus with unset无法删除某些未设置的菜单
【发布时间】:2013-04-13 06:55:43
【问题描述】:

我有一个自定义用户角色,它只需要访问某些帖子类型,我试图通过以下方式隐藏其他菜单:

function remove_menus () {

    global $current_user;
    if ($current_user->wp_capabilities['my_custom_capability']){

        global $menu;
        $restricted = array(
        __('Supporters'),
        __('Posts'),
        __('Press Release'),
        __('Consumer Care'),
        __('Tools')
        );
        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');

这适用于支持者(这是另一种自定义帖子类型)、帖子和工具,但不适用于消费者服务或新闻稿。我已经尝试了数组中我能想到的所有变体:

__('Consumer_Care'),
__('Consumer-Care'),
__('consumer care'),
__('consumer-care'),
__('consumer_care')

他们都没有做这项工作。我该怎么做?

【问题讨论】:

    标签: wordpress menu user-roles


    【解决方案1】:

    只需在操作调用中添加high priority。没有它,它会在默认的10 下触发,并且许多插件会在此之后运行,所以你的unset 不会得到它们。

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

    【讨论】:

      猜你喜欢
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      • 2022-07-26
      • 2010-09-09
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多