Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Modify the nav extras.
<?php
//* Do NOT include the opening php tag shown above. Copy the code shown below.
add_filter( 'wp_nav_menu_items', 'theme_menu_extras', 10, 2 );
/**
* Filter menu items, appending either a search form or today's date.
*
* @param string $menu HTML string of list items.
* @param stdClass $args Menu arguments.
*
* @return string Amended HTML string of list items.
*/
function theme_menu_extras( $menu, $args ) {
//* Change 'primary' to 'secondary' to add extras to the secondary navigation menu
if ( 'primary' !== $args->theme_location )
return $menu;
//* Uncomment this block to add a search form to the navigation menu
/*
ob_start();
get_search_form();
$search = ob_get_clean();
$menu .= '<li class="right search">' . $search . '</li>';
*/
//* Uncomment this block to add the date to the navigation menu
/*
$menu .= '<li class="right date">' . date_i18n( get_option( 'date_format' ) ) . '</li>';
*/
return $menu;
}
@ecksteing

This comment has been minimized.

Copy link

@ecksteing ecksteing commented Jul 13, 2014

Just a 'heads up' that this script won't work as the function needs to be called in the filter. To get the script to work change
add_filter( 'wp_nav_menu_items', 'genesis_nav_right', 10, 2 );
to
add_filter( 'wp_nav_menu_items', 'theme_menu_extras', 10, 2 );

@paaljoachim

This comment has been minimized.

Copy link

@paaljoachim paaljoachim commented Apr 28, 2015

What about adding the above to a custom menu?

@butlerblog

This comment has been minimized.

Copy link

@butlerblog butlerblog commented Jun 22, 2015

I'm not sure if it's just me or what, but I have had inconsistent performance of the navigation extras aligning properly in Chrome. Putting the item with the .right class at the beginning of the list items solved this issue.

So in this in example, considering the line to include search in the primary menu:
$menu .= '<li class="right search">' . $search . '</li>';

This would put the search item at the front of the list (which solves the Chrome browser alignment problems):
$menu = '<li class="right search">' . $search . '</li>' . $menu;

@agreda

This comment has been minimized.

Copy link

@agreda agreda commented Oct 17, 2015

Hello, how about to remove "search" button what do i need to add/remove

thanks in advance,

@ryanhellyer

This comment has been minimized.

Copy link

@ryanhellyer ryanhellyer commented Mar 3, 2016

There is some broken looking output buffering in the commented section of code.

@AndrewSepic

This comment has been minimized.

Copy link

@AndrewSepic AndrewSepic commented Apr 4, 2016

As far as I can tell, changing 'primary' to 'secondary' in order to add some extras into the secondary navigation does not work. Anyone else verify this?

@braddalton

This comment has been minimized.

Copy link

@braddalton braddalton commented Aug 13, 2017

Based on my usage of this code in many different genesis child themes, you may not need to use output buffering. Also, the CSS to align/position the search form may vary per theme. You can also use this code with any custom menu as long as you swap out the name of menu location with the custom name of your menu.

@maigaston

This comment has been minimized.

Copy link

@maigaston maigaston commented Sep 4, 2018

Where to add the nav-extras.php file in Genesis or theme file like eleven 40 . Also As of now I have added it in genesis files but not able to see anyhting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment