<?php // functions.php register_nav_menus( array( 'main' => __( 'Main Menu', 'mytheme' ), ) ); ?> <?php // somewhere in header.php ?> <header class="header"> <nav class="nav"> <?php if ( has_nav_menu( 'main' ) ) { wp_nav_menu( array( 'theme_location' => 'main-menu', 'container' => '', 'menu_class' => 'navigation-main', ) ); } ?> </nav> </header>
Then all you have to do is go through the usual process of creating a menu and adding items to it via the admin dashboard.
For this tutorial we’ll assume our menu’s structure is as follows:
├── Home ├── Blog | ├── News | ├── Sports | ├── Fashion | | ├── Article #1 Title | | ├── Article #1 Title | ├── Business ├── About └── Contact
Final HTML markup
<header class="header"> <nav class="nav"> <ul class="navigation-main"> <li class="current-menu-item"> <a href="#">Home</a> </li> <li class="menu-item-has-children"> <a href="#">Blog</a> <ul> <li><a href="#">News</a></li> <li><a href="#">Sports</a></li> <li class="menu-item-has-children"> <a href="#">Fashion</a> <ul> <li><a href="#">Article #1</a></li> <li><a href="#">Article #2</a></li> </ul> </li> <li><a href="#">Business</a></li> </ul> </li> <li><a href="#">About</a></li> <li><a href="#">Contact</a></li> </ul> </nav> </header>
The menu’s main structural styles
.header { display: flex; align-items: center; } .nav { width: 100%; } .navigation-main { // // Structural Styles // margin: 0; padding: 0; list-style: none; width: 100%; text-align: center; ul { margin: 0; padding: 0; list-style: none; position: absolute; left: -999em; // "Hide" the sub-menus } li { display: inline-block; position: relative; text-align: left; // Reset text alignment // First sub-menus appear below the menu item &:hover { > ul { left: auto; } } // All other levels appear on the right li { display: block; &:hover { > ul { left: 100%; top: 0; } } } } // // Presentational Styles (we'll add them soon) // }