Skip to content

Instantly share code, notes, and snippets.

@studiopress
Last active September 11, 2023 21:24
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save studiopress/f9729e9f10ddcd0a832a to your computer and use it in GitHub Desktop.
Save studiopress/f9729e9f10ddcd0a832a to your computer and use it in GitHub Desktop.
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;
}
@butlerblog
Copy link

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
Copy link

agreda commented Oct 17, 2015

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

thanks in advance,

@ryanhellyer
Copy link

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

@AndrewSepic
Copy link

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
Copy link

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
Copy link

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