Очищаем страницу Меню панели администратора с помощью настроек экрана

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

Конечно, вы можете изменить код произвольных типов записей, чтобы удалить их из меню, но есть и более простое решение. Вы можете использовать вкладку «Настройки экрана» (Screen Options), которая отображается на странице «Внешний вид — Меню» панели администратора.

Панель с настройками экрана в разделе Меню панели администратора

На изображении выше показана панель настроек экрана для сайта, на котором используются плагины для электронной коммерции, календаря событий и форумов Q&A. Каждый из этих плагинов работает с пользовательским типом записей, который может быть добавлен в меню. Скорее всего, ваши плагины, зависящие от произвольных типов записей, включают в себя подобную функциональность.

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

В итоге, на странице Меню панели администратора будут выведены только рубрики, метки, страницы, а также некоторые другие стандартные настройки; все это упростит задачу поиска нужных элементов при создании нового меню.

Чистый раздел Меню панели администратора, содержащий только самые важные пункты
Блог про WordPress
Комментарии: 4
  1. adward

    Клиент требует убирать из меню те страницы сайта (меню основано на страницах), для которых стоит статус «Черновик» или «На утверждении».

    Можно ли каким нибудь способом, либо:
    a) не формировать это меню в момент сборки, или же
    б) присваивать такому пункту какой либо, скажем, класс, например class=»hiddenitem»

    В данный момент меню формируется следующим образом:

    $args = array(
    ‘theme_location’=>’equipment-menu’,
    ‘container’=>’div’,
    ‘container_class’=>’children_menu_top’,
    ‘container_id’=>’menu’,
    ‘menu_class’=>’sf-menu’,
    ‘menu_id’=>’children_menu’,
    ‘before’=>»,
    ‘after’=>»,
    ‘fallback_cb’=>false
    );
    wp_nav_menu($args);

    1. Дмитрий (автор)

      Вообще, если использовать решения через статусы страниц, то в таком случае вам нужно обратить свое внимание на следующий фильтр: http://codex.wordpress.org/Plugin_API/Filter_Reference/nav_menu_css_class

      Он позволяет присваивать классы для пунктов меню на базе какого-нибудь условия. Допустим, что вы хотите скрывать пункты меню на базе статуса страниц (пусть это будут черновики, т.е. статус draft). В таком случае вам понадобится следующий код:

      add_filter('nav_menu_css_class' , 'nav_menu_add_post_status_class' , 10 , 2);
      function nav_menu_add_post_status_class($classes, $item){
      	$post_status = get_post_status($item->object_id);
      	$classes[] = $post_status;
      	return $classes;
      }

      Здесь в качестве класса мы присваиваем статус записи, т.е. соответствующие пункты меню (черновики) будут иметь класс draft. В дальнейшем их можно будет скрыть в CSS при помощи правила li.draft. Соответственно, если надо скрыть страницы «на утверждении», то можно воспользоваться статусом pending и применить стили к li.pending.

  2. Adward

    Спасибо огромное, меня это спасло. И помогло.
    Надо будет в фильтрах разобраться однозначно.

    Благодарствую, Дмитрий :-)
    И жму руку!

    1. Дмитрий (автор)

      Не за что, всегда готов помочь.

Добавить комментарий

Получать новые комментарии по электронной почте.