shawn
  • 0
Учитель

Прикрепить меню навигации к панели администратора?

  • 0

Я видел несколько решений, как вручную прикреплять ссылки к новой панели администратора WP, но мне нужно сделать это намного проще для администраторов моего сайта.

Мне пришло в голову, что самым простым решением было бы создать пользовательское меню навигации, а затем «прикрепить» это меню к панели администратора. Таким образом, администратор сайта может очень легко добавлять новые ссылки в панель администратора, просто добавляя страницы в пользовательское меню.

Основная идея заключалась в том, чтобы разместить раскрывающееся меню, отображающее страницы меню, непосредственно в правой части панели администратора.

Share
  1. См. этот вопрос для получения дополнительной информации о добавлении меню в панель администратора WordPress.

    • 0
  2. Оказывается, это очень легко! Нет необходимости в специальных ходунках, wp_get_nav_menu_items() возвращает все необходимое. В этом примере добавляется один пункт корневого меню, а затем меню, вы можете сделать это по-другому, если хотите. Он отображает все дополнительные функции меню, которые я смог найти в коде, я не знаю, можно ли установить их все в пользовательском интерфейсе меню.

    add_action( 'admin_bar_menu', 'wpse15186_admin_bar_menu' );
    function wpse15186_admin_bar_menu( &$wp_admin_bar )
    {
        $menu = wp_get_nav_menu_object( 'WPSE 15186 test menu' );
        $menu_items = wp_get_nav_menu_items( $menu->term_id );
    
        $wp_admin_bar->add_menu( array(
            'id' => 'wpse15186-menu-0',
            'title' => 'WPSE 15186 menu',
        ) );
    
        foreach ( $menu_items as $menu_item ) {
            $wp_admin_bar->add_menu( array(
                'id' => 'wpse15186-menu-' . $menu_item->ID,
                'parent' => 'wpse15186-menu-' . $menu_item->menu_item_parent,
                'title' => $menu_item->title,
                'href' => $menu_item->url,
                'meta' => array(
                    'title' => $menu_item->attr_title,
                    'target' => $menu_item->target,
                    'class' => implode( ' ', $menu_item->classes ),
                ),
            ) );
        }
    }
    
    • 0

Оставить ответ

You must login to add an answer.