Solved

Get menu name from parent page

Posted on 2013-11-20
4
473 Views
Last Modified: 2013-11-21
I'd like to keep the amount of page templates to a minimum in a theme I am creating but would like to add the ability to have secondary menus on a page based on which page the user is on.

For instance, we'll always have the primary navigation at the top of the page.

But I'd like to build separate menus that the user can custom create in the appearance >> menus area.  

I'd then like to add some dynamic code in my page.php template that determines which parent page we are on, then displays any extra navigation if there is one or goes to a default otherwise.  

I'm looking for some pointers on how to select the secondary navigation menus because I am not adding them into a location in the menus area.  Mainly, needing to create a variable for the menu name, then use that variable to select a menu with wp_nav_menu();
0
Comment
Question by:axessJosh
  • 2
4 Comments
 
LVL 17

Expert Comment

by:OmniUnlimited
ID: 39665614
I would think that all you'd need to do is set up a switch statement in your template based off the page id:

<?php
global $wp_query;

switch ($wp_query->post->ID) {
     case 127:
           $theme_location = 'sidebar_menu';
           $menu = 'boss_sidebar_menu';
           break;
     case 142:
           $theme_location = 'top_menu';
           $menu = 'custom_top_menu';
           break;
...etc.
}

$defaults = array(
	'theme_location'  => $theme_location,
	'menu'            => $menu,
	'container'       => 'div',
	'container_class' => '',
	'container_id'    => '',
	'menu_class'      => 'menu',
	'menu_id'         => '',
	'echo'            => true,
	'fallback_cb'     => 'wp_page_menu',
	'before'          => '',
	'after'           => '',
	'link_before'     => '',
	'link_after'      => '',
	'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
	'depth'           => 0,
	'walker'          => ''
);

wp_nav_menu( $defaults );
?>

Open in new window

0
 
LVL 17

Accepted Solution

by:
jrm213jrm213 earned 500 total points
ID: 39666299
OmniUnlimited is on the right track and what he posted will work, but this kind of setup get's tedious to continue updating as you add pages or need to make changes, especially if you have other users who are not used to editing code working with the site.

I would recommend instead adding a custom field that takes the name of the secondary menu that you want to display as it's value. Read that custom field and if it is there, use it to display the menu.

This way any editor could choose to add or remove a secondary menu for a page, and even create the menu and just use it's name in that custom field, and they wouldn't have to edit any code.
0
 
LVL 2

Author Comment

by:axessJosh
ID: 39666330
Thanks JRM,

I was trying to avoid using custom fields but you are correct, that is probably the simplest way to handle it and not have to deal with getting into the code with future updates.

This may need a second question, but any thoughts on how to display the menu title with the menu?
0
 
LVL 17

Expert Comment

by:jrm213jrm213
ID: 39666380
Thanks for the points, I would have split the points between me and omniunlimited though.

You could try this for getting the title:

http://wordpress.org/support/topic/display-title-attribute-in-menu
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Drop down button NAMES disappear 1 62
Help cleaning out CSS 2 51
Integrate Office 365 calendar events into WordPress sites 2 56
Word Press Contact Form 7 6 15
WordPress can be pretty daunting, especially for a beginner, so I thought it might be a good idea to write an article to show how easy it is to get started in WordPress and to design a custom theme.  The first step is to check with your hosting comp…
WordPress is constantly evolving, and with each evolution appears to get better and better.  One of the big drawbacks prior to version 3 was that there was no way to be able to set up a custom menu from the backend. The Old Way Adding menus is…
The purpose of this video is to demonstrate how to set up the permalinks on a WordPress Website. This will be demonstrated using a Windows 8 PC. Go to your WordPress login page. This will look like the following: mywebsite.com/wp-login.php : Go t…
The is a quite short video tutorial. In this video, I'm going to show you how to create self-host WordPress blog with free hosting service.

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now