Как скрыть меню в админке WordPress

13 февр. 2014 г., 07:43:26
Просмотры: 17.1K
Голосов: 5

Я хочу скрыть некоторые меню в админ-панели: Внешний вид, Плагины и Инструменты.

Как скрыть их без плагина?

И как я могу легко вернуть их обратно позже?

2
Комментарии

Я не совсем понимаю ваш вопрос о том, как сделать элементы видимыми. Если убрать функции из моего ответа ниже, они должны снова появиться.

iyrin iyrin
13 февр. 2014 г. 08:33:08

Для всех ролей и возможностей?

Brad Dalton Brad Dalton
13 февр. 2014 г. 12:58:33
Все ответы на вопрос 3
5

Вы можете сделать это с помощью remove_menu_page. Добавьте соответствующий слаг меню в functions.php вашей темы или плагина.

<?php remove_menu_page( $menu_slug ) ?>

Обратите внимание, что пользователи все равно могут получить доступ к этим меню через прямую ссылку. Если вы хотите заблокировать доступ пользователя к меню, вам нужно настроить роль пользователя и убедиться, что у него нет соответствующих прав.

Вот список примеров слогов для меню, включенных в чистую установку WordPress.

<?php
function remove_menus(){  

  remove_menu_page( 'index.php' );                  //Консоль  
  remove_menu_page( 'edit.php' );                   //Записи  
  remove_menu_page( 'upload.php' );                 //Медиафайлы  
  remove_menu_page( 'edit.php?post_type=page' );    //Страницы  
  remove_menu_page( 'edit-comments.php' );          //Комментарии  
  remove_menu_page( 'themes.php' );                 //Внешний вид  
  remove_menu_page( 'plugins.php' );                //Плагины  
  remove_menu_page( 'users.php' );                  //Пользователи  
  remove_menu_page( 'tools.php' );                  //Инструменты  
  remove_menu_page( 'options-general.php' );        //Настройки  

}  
add_action( 'admin_menu', 'remove_menus' );  
?>
13 февр. 2014 г. 08:22:57
Комментарии

Удаляет ли это также их из админ-панели на фронтенде для авторизованных пользователей?

Brad Dalton Brad Dalton
13 февр. 2014 г. 12:59:56

Похоже, это не влияет на админ-панель.

iyrin iyrin
13 февр. 2014 г. 13:20:01

@RyanLoremIpsum: как если мы хотим скрыть только post->tag? (не все меню post)

Lena Queen Lena Queen
13 февр. 2014 г. 13:27:17

Я не понимаю вопрос. Если вы спрашиваете, как удалить пункт подменю "Метки" из меню "Записи" в админ-панели, это можно сделать с помощью remove_submenu_page( $menu_slug, $submenu_slug );. Примеры можно найти в документации remove submenu page в WordPress codex.

iyrin iyrin
13 февр. 2014 г. 13:37:26

@RyanLoremIpsum это дополнительный вопрос, и спасибо за помощь

Lena Queen Lena Queen
13 февр. 2014 г. 17:53:14
0
13 февр. 2014 г. 08:44:28
0

Это отличный фрагмент кода из плагина Core Functionality от Bill Erickson.

/**
 * Удаление пунктов меню
 * @since 1.0.0
 *
 * Удалите неиспользуемые пункты меню, добавив их в массив.
 * См. закомментированный список пунктов меню для справки.
 *
 */
function ni_remove_menus () {
    global $menu;

    // Пример:
    //$restricted = array(__('Консоль'), __('Записи'), __('Медиафайлы'), __('Ссылки'), __('Страницы'), __('Внешний вид'), __('Инструменты'), __('Пользователи'), __('Настройки'), __('Комментарии'), __('Плагины'));
    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', 'ni_remove_menus' );

Раскомментируйте массив $restricted и включите в него пункты меню, которые хотите скрыть. В примере приведены все пункты меню для справки.

13 февр. 2014 г. 08:58:59