Add a menu to WordPress page with PHP action hooks
Adding a menu to WordPress via PHP and action hooks requires three steps, registering the menu location, assigning a menu to it and then placing the menu with an action hook.
Register WordPress Menu
Registering a menu is done with register_nav_menu, below is an example to register a ‘Store Menu’ menu.
add_action( 'init', 'wpb_custom_new_menu' );
/**
* Register New Store Menu
*/
function wpb_custom_new_menu() {
register_nav_menu('store-menu',__( 'Store Menu' ));
}
Once it is registered it is visible in the WP dashboard, Appearance > Menus.

Assign WordPress Menu to new location
The next step is to create a menu and assign the new location to it, easy enough!
Position the Menu
So now you can position the menu using a number of hooks, a function and WordPress internal function wp_nav_menu
add_action( 'woocommerce_before_single_product', 'store_menu_placement' );
/**
* Place New Store Menu
*/
function store_menu_placement() {
wp_nav_menu( array(
'theme_location' => 'store-menu',
'container_class' => 'store-menu-class' ) );
}
So in my example I am placing this menu on single WooCommerce products just before the product details, I am using the theme location ‘store-menu’ as per the menu registration and including a CSS class in the containing element.
Adding some CSS
Finally you can add some CSS styles to get you up and running.
/* Store Menu */
.store-menu-class ul {
margin:0 0px 20px 0px;
list-style-type: none;
list-style: none;
list-style-image: none;
text-align:right;
}
.store-menu-class li {
padding: 0px 20px 0px 0px;
display: inline;
}
.store-menu-class a {
color:#27408f;
}
.store-menu-class a:hover {
color:#428bca;
}
@media (min-width:1024px) {
.store-menu-class {
position: absolute;
right: 0;
top: 1px;
}
}
Edit to suit your needs.




