Handling complex multi-level architecture / menu for large site

I am trying to get feedback and ideas for solving an information architecture / content management problem using wordpress.

I have a large site ( 1,000+ pages, hundreds of posts ) made up of sections. Each section needs its own secondary navigation menu that contains both pages and custom links. This is easily done, but not necessarily easy to manage ( for non-programmers ).

Read More

Imagine this structure:

Parent 1

  • Page 1a
  • Page 1b
  • Page 1c
  • Custom Link 1d

Parent 2

  • Page 2a
  • Page 2b
  • Parent 3
    • Page 3a
    • Page 3b
    • Custom Link 3c
  • Page 2d
  • Custom Link 2e

Here are the solutions I have come up with ( and noted problems ):

  1. Create menus using the normal WP 3 + navigation system. Associate each parent page with a menu ( through a custom meta tag / taxonomy / slug / other ), then on each page grab it’s parent ( if it does not have children itself ) and display the correct menu

    • Problems? Plenty! Since this is a large site, it will contain many menus making maintenance confusing.
    • Adding pages becomes a hassle – add the page, declare the correct parent page, then add the page again to the correct menu ( could be simplified by attaching this last piece programmatically to the save_page hook ).
    • What if a user adds a page and declares a parent page that does not have a menu associated with it?
    • Keeping track of the parent page – menu association will be tedious and not intuitive
  2. Use multisite – each site gets its own menu that is shown on all of the pages contained within.
    • Many issues with multisite ( plugins, server resources, etc )
    • This is really only one large site, not a network of different but interconnected sites
  3. Forgo the WP 3+ navigation system, instead create pages for ALL menu items ( including custom links ) and use a plugin / forwarding / redirect to change certain dummy pages into custom links. Use wp_list_pages to programmatically create menus based on page parent relationship
    • There will be a lot of actual pages already, adding fluff ( pages which just redirect ) to the pages list is probably not a good idea
    • Use custom post types for each section of the site, with a menu for each custom post type
    • How do we replicate the nesting shown above ( Parent 3 nested in Parent 2 )?
    • Many of the same issues as #1 above

I hope my explanation of the problem and possible solutions are clear – if not, please ask away. Otherwise, any feedback or ideas as to how to accomplish this are very welcome.

Related posts

Leave a Reply

2 comments

  1. I’d use the native WordPress custom menus mostly because they allow the admin to edit the content easily. I don’t see the other solutions you propose as flexible enough for a client to use. I don’t think it’s possible to avoid complexity completely in this case. Better to focus on educating the client.
    By the way, though, you missed out the possible problem that WordPress custom menus don’t replicate the actually structure of the site, so the client has to reproduce this when they add items to the menu.

  2. I would not link to single sections within a document from the main menu. I would provide a link to each document and maybe present a separate sub-menu for pages with multiple sections.

    To include custom links in your menu I would create a page or some other post type document to finally be able to create the menus with the WP functions (wp_list_pages and friends). If you have hundredths of pages, you really wont administrate the menus manually. So to give a clear answer to your question: I would go with your third solution.

    There are also ready plugins to manage the visibility of single pages within a generated menu or to set up the menu order and nesting. Ah, found it: I was using pageMash, which has a disclaimer now on the WP plugin site, but is still running on several of my installations with versions between 3.1 and 3.4.