This is my code thus far:

function register_my_menus() {
    register_nav_menus(
        array(
             'header-menu' => __( 'Header Menu' ),
             'extra-menu' => __( 'Extra Menu' )
        )
    );
}
add_action( 'init', 'register_my_menus' );

But this seems to only register ‘locations’ in which to place custom menus.
What I want is for all the custom menus (and menu items) to be fully setup on after_theme_setup or init.

Thanks

2 s
2

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 );
    */

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *