Using the following, or any other custom Walker_Nav_Menu seems to cause a blank navigation menu, I tried specifying the default to make sure I wasn’t going crazy yet it still blanks the output… Any ideas on what is going wrong?
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'depth' => 3, 'walker' => new Walker_Nav_Menu() ) ); ?>
In Context
<?php
/**
* The Header for our theme.
*
* Displays all of the <head> section and everything up till <div id="main">
*
* @package Expound
*/
?><!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title><?php wp_title( '|', true, 'right' ); ?></title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<div id="page" class="hfeed site">
<?php do_action( 'expound_header_before' ); ?>
<header id="masthead" class="site-header" role="banner">
<div class="site-branding">
<div class="site-title-group">
<a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">
<!--div class="site-title"><!--?php bloginfo( 'name' ); ?></div-->
<img height="240" width="722" alt="The All Australian Minecraft Community" class="wp-post-image" src="http://taamc.com/wordpress/wp-content/themes/expound-child/images/logo.png">
<!--h2 class="site-description"--><!--?php bloginfo( 'description' ); ?--><!--/h2-->
<!--div id="sub-title">
<div id="sub-title-image"></div>
</div-->
</a>
</div>
</div>
<div class = "site-title-group">
<?php if ( dynamic_sidebar('header_widget_area') ) : else : endif; ?>
</div>
<nav id="site-navigation" class="navigation-main" role="navigation">
<h1 class="menu-toggle"><?php _e( 'Menu', 'expound' ); ?></h1>
<div class="screen-reader-text skip-link"><a href="#content" title="<?php esc_attr_e( 'Skip to content', 'expound' ); ?>"><?php _e( 'Skip to content', 'expound' ); ?></a></div>
####################################################################################
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'depth' => 3, 'walker' => new Walker_Nav_Menu()) ); ?>
####################################################################################
<div class="site-nav-search"><?php if ( dynamic_sidebar('navigation_widget_area') ) : else : endif; ?></div>
<?php do_action( 'expound_navigation_after' ); ?>
</nav><!-- #site-navigation -->
</header><!-- #masthead -->
<?php do_action( 'expound_header_after' ); ?>
<div id="main" class="site-main">
The above is currently in my header.php of a child theme if that makes any difference, and the original theme also used the default walker, however it wasn’t explicitly stated.
with php as above
<div class="menu">
<ul class=" nav-menu">
<li class="current_page_item">
<a href="http://taamc.com/">Home</a>
</li>
<li id="menu-item-21" class="menu-item-21">
<a></a>
</li>
<li id="menu-item-87" class="menu-item-87">
<a></a>
</li>
<li id="menu-item-122" class="menu-item-122">
<a></a>
</li>
<li id="menu-item-28" class="menu-item-28">
<a></a>
</li>
<li id="menu-item-127" class="menu-item-127">
<a></a>
</li>
<li id="menu-item-22" class="menu-item-22">
<a></a>
</li>
</ul>
</div>
Gives errors:
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 148
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 151
Notice: Trying to get property of non-object in /home/taamc/public_html/wordpress/wp-includes/nav-menu-template.php on line 153
with php as found by default in the theme
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'depth' => 3) ); ?>
<div class="menu">
<ul class=" nav-menu">
<li class="current_page_item">
<a href="http://taamc.com/">Home</a>
</li>
<li class="page_item page-item-21">
<a href="http://taamc.com/activity/">Activity</a>
</li>
<li class="page_item page-item-87">
<a href="http://taamc.com/gallery/">Gallery</a>
</li>
<li class="page_item page-item-122">
<a href="http://taamc.com/getting-started/">Getting Started</a>
</li>
<li class="page_item page-item-28">
<a href="http://taamc.com/groups/">Groups</a>
</li>
<li class="page_item page-item-127">
<a href="http://taamc.com/map/">Map</a>
</li>
<li class="page_item page-item-22">
<a href="http://taamc.com/members/">Members</a>
</li>
</ul>
</div>
You need to make sure your menu is properly registered in your
functions.php
and then activated in the WP Dashboard.Otherwise I was just facing a long list of empty bullet points.
http://codex.wordpress.org/Navigation_Menus
You should pass an actual object as ‘walker’ – not create one on the fly. The correct way to do it is:
Also make sure you extend Walker_Nav_Menu in your custom class.
do you use walker menu for mobile responsive purpose ? If yes then you can go for an another solution.(Only if you cant fix your errors with the walker menu)
you can hide main menu on mobile devices and can use another one. here is an example
I think the wholee problem is your trying to use the default walker, but by declaring it in the walker field your telling wordpress your trying to load a custom walker, the wp walker is loaded by default if left empty.
two options:
1/ change
'walker' => new Walker_Nav_Menu() to 'walker' => ''
as its called by default.2/ edit declaration to a new name like: new themeslug_Walker_Nav_Menu() then add the following to your function.php:
see the codex its explains quite well.
Sometimes this happens when a menu hasn’t been created yet. The reason you can’t use or extend the
Walker_Nav_Menu
class is because the actual menu that you see when you call upon theprimary
nav menu without a walker is actually the fallback towp_page_menu()
. For this to work with a walker, a menu will need to be created and the Primary checkbox will need to be checked.Custom_Nav_Walker put
function.php
filenav_menu put
header.php