Плагин для удаления Элементов меню администратора на основе пользовательской роли?

Я искал высоко и низко для плагина, который может удалить/скрыть Элементы меню администратора, включая пользовательские типы сообщения и taxonomies, на основе пользовательской роли.

Все, которые я судил только, делают глобальное, скрываются, не на основе пользовательской роли. Другие более сложные как adminize не отображают пользовательские типы сообщения или taxonomies.

Я должен записать свою собственную функцию или есть ли простой плагин, который я пропускаю?

6
30.01.2011, 07:27
4 ответа

Обновление:

чтение ответа микрофона снова получило меня думающий, что можно добавить новую возможность к роли и использованию что как Вы условие удаления, таким образом:

   // first add your role the capability like so
   // get the "author" role object
   $role = get_role( 'administrator' );

   // add "see_all_menus" to this role object
   $role->add_cap( 'see_all_menus' );

   //then remove menu items based on that
   function remove_those_menu_items( $menu_order ){
            global $menu;
            // check using the new capability with current_user_can
            if ( !current_user_can( 'see_all_menus' ) ) {
             foreach ( $menu as $mkey => $m ) {
                //custom post type name "portfolio"
                $key = array_search( 'edit.php?post_type=portfolio', $m );
                //pages menu
                $keyB = array_search( 'edit.php?post_type=page', $m );
                //posts menu
                $keyC = array_search( 'edit.php', $m );

                if ( $key || $keyB || $keyC )
                    unset( $menu[$mkey] );
             }
            }
            return $menu_order;
    }

 //Then just Hook that function to "menu_order"
        add_filter( 'menu_order', 'remove_those_menu_items' );

Старый ответ

Я полностью согласен с тем, что отправил микрофон, но если Вы не до пользовательского кодирования, Смотрят на Редактора Меню администратора плагин.

это позволяет Вам установить права доступа уровнем.

8
19.02.2020, 22:04
  • 1
    я попробовал это, но скрыть функция, кажется, глобальная установка, его включения - выключения, никакое пользовательское ролевое управление. –  Wyck 30.01.2011, 07:18
  • 2
    Хорошо, новый подход, я обновил свой ответ. –  Bainternet 30.01.2011, 11:49

Привет @Wyck:

Я могу определенно ценить Ваши потребности; я сделал, чтобы клиенты попросили то же. К сожалению, хотя, WordPress связывает страницы меню администратора (т.е. разделы меню) и подстраницы меню (т.е. пункты меню) к возможностям, не к ролям.

Однако не было бы слишком трудно написать некоторый сменный код, который позволяет Вам присваивать опции меню администратора ролям вместо этого; Ваш сценарий установил бы возможность, требуемую для всех пунктов меню потребовать нового 'not-allowed' возможность и затем имеет Ваш код, выборочно присваивают значение по умолчанию 'read' возможность к каждому пункту меню, где роль текущего пользователя имеет определенную возможность.

Больший вопрос затем становится как к Вашему представлять отображение пользовательских ролей к пунктам меню? Я видел что, требуя довольно тщательно продуманного администраторского пользовательского интерфейса. Конечно, если Вы просто хотите к hardcode массив, который определяет, какие роли видят то, что, это будет довольно легко...

1
19.02.2020, 22:04
  • 1
    Спасибо Mike, возможно, идея для плагина, если время разрешает, но на данный момент я думаю, что просто сделаю что-то простое и hardcode массив, забавная вещь, я отправил это в потоке функций на здесь несколько недель назад. –  Wyck 30.01.2011, 07:23

Существует плагин, который создал для точного вопроса: Скройте Меню администратора. Этот плагин может:

  • Скройте элементы меню администратора на основе пользовательской роли, включая Администратора и пользовательскую пользовательскую роль
  • Может скрыть администраторские объекты панели, также
  • Может экспортировать/импортировать настройки для использования на других сайтах

Другая хорошая вещь от этого плагина, это интуитивно и просто в использовании.

2
19.02.2020, 22:04

Это сохранит только несколько пунктов меню для неадминистраторов. использование версии @Bainternet add_cap, который должен быть сделан только однажды на теме или сменной активации.

add_action('admin_menu', function () {
    if (current_user_can('administrator')) {
        return;
    }

    /**
     * Keep only specific menu items and remove all others
     */
    global $menu;
    $hMenu = $menu;
    foreach ($hMenu as $nMenuIndex => $hMenuItem) {
        if (in_array($hMenuItem[2], array(
                                         'index.php',
                                         'edit.php?post_type=product',
                                    ))
        ) {
            continue;
        }
        unset($menu[$nMenuIndex]);
    }
}
0
19.02.2020, 22:04

Теги

Похожие вопросы