Add New Menu to WordPress Site Using Code
1. Register a new menu in WordPress admin
Use WordPress’s register_nav_menus
to register the menu so it appears in Appearance > Menus > Menu Locations. Place the below PHP code in Code Snippets plugin:
function register_my_menus() { register_nav_menus( array( 'header' => __( 'Reid Header Menu' ), 'other' => __( 'Reid Other Menu' ) ) ); } add_action( 'init', 'register_my_menus' );
Important: In the Code Snippet plugin, right below the PHP code, make sure and choose Run snippet everywhere. Otherwise the newly-registered menus will not show up in Appearance > Menus > Menu Locations.
Note: The use of the word Reid in Reid Header Menu in the above PHP is not necessary. It’s just a way for me to see if everything is showing up in the right places.
Source:
- Kinsta article: An In-Depth Guide to Create and Customize a WordPress Menu, part 3. Write Code to Create Your Custom WordPress Menu
2. Display menu in theme header on front-end
Next, use WordPress’s wp_nav_menu ()
function to display the menu on the front-end of the site. Use theme_location
to place the menu in the theme’s header
. Since I’m using the Kadence WP theme I need to use an Action Hook to hook the wp_nav_menu
into the theme. I’ve chosen the kadence_before_content
action hook as an example.
Place the below PHP code in Code Snippets plugin:
/* * Display menu in Header using the wp_nav_menu() function * https://kinsta.com/blog/wordpress-custom-menu/#3-write-code-to-create-your-custom-wordpress-menu * https://www.kadencewp.com/kadence-theme/knowledge-base/advanced/theme-hooks/ * */ function reid_header_menu() { wp_nav_menu( array( 'theme_location' => 'header', ) ); } add_action( 'kadence_before_content', 'reid_header_menu' );
In the Code Snippet plugin, right below the PHP code, choose Only run on site front-end (since the menu is only running on the front-end of the site).
Source:
- Kinsta article: An In-Depth Guide to Create and Customize a WordPress Menu, part 3. Write Code to Create Your Custom WordPress Menu
- Kadence WP theme hooks
3. Add dropdown for subpages
Will update with new info.