How do I create predefined menus for my theme?

Example code taken from new2wp.com located HERE

   // Function for registering wp_nav_menu() in 3 locations
    add_action( 'init', 'register_navmenus' );
    function register_navmenus() {
        register_nav_menus( array(
            'Top'       => __( 'Top Navigation' ),
            'Header'    => __( 'Header Navigation' ),
            'Footer'    => __( 'Footer Navigation' ),
            )
        );

        // Check if Top menu exists and make it if not
        if ( !is_nav_menu( 'Top' )) {
            $menu_id = wp_create_nav_menu( 'Top' );
            $menu = array( 'menu-item-type' => 'custom', 'menu-item-url' => get_home_url("https://wordpress.stackexchange.com/"),'menu-item-title' => 'Home' );
            wp_update_nav_menu_item( $menu_id, 0, $menu );
        }
        // Check if Header menu exists and make it if not
        if ( !is_nav_menu( 'Header' )) {
            $menu_id = wp_create_nav_menu( 'Header' );
            $menu = array( 'menu-item-type' => 'custom', 'menu-item-url' => get_home_url("https://wordpress.stackexchange.com/"), 'menu-item-title' => 'Home' );
            wp_update_nav_menu_item( $menu_id, 0, $menu );
        }
        // Check if Footer menu exists and make it if not
        if ( !is_nav_menu( 'Footer' )) {
            $menu_id = wp_create_nav_menu( 'Footer' );
            $menu = array( 'menu-item-type' => 'custom', 'menu-item-url' => get_home_url("https://wordpress.stackexchange.com/"), 'menu-item-title' => 'Home' );
            wp_update_nav_menu_item( $menu_id, 0, $menu );
        }

        // Get any menu locations that dont have a menu assigned to it and give it on
        /* Currently not working. couldnt fix it.
        $loc = array('Top', 'Header', 'Footer');
        if ( has_nav_menu( $location )) {
            $locations = get_nav_menu_locations();
            return (!empty( $locations[ $location ] ));
        }
        */
    }
    /* Delete nav menu in case you need it
    wp_delete_nav_menu( $menu );
    */

Leave a Comment