How to get correct URLs in network wide menu (Multisite)?

I’m using this function to switch to my main website’s navigation and display it on all sub sites in my multisite network. Ideally the links should have the following format:

http://www.mysite.com/navigation-link

Read More

but on the sub-sites the urls are http://www.mysite.com/subsite/navigation-link

Obviously these pages don’t exist so it’s just showing a blank page. Any idea how I could make sure the urls are like the first example and how I might incorporate that into my function?

function wp_multisite_nav_menu() {

    global $blog_id;

    $args = array(
            'menu' => 'Main Menu',
            'theme_location' => 'main-nav'

        );

    $main_blog = 1; 

    $main_blog = absint( $main_blog );


    if ( !is_multisite() || $blog_id == $main_blog ) {
        echo wp_nav_menu( $args );
        return;
    }

    else {

    switch_to_blog( 1 );

    echo wp_nav_menu( $args );

    restore_current_blog();

    }

}

Related posts

Leave a Reply

1 comment

  1. You just need the last part of your function where you switch to blog 1 and get the menu.

    function wp_multisite_nav_menu() {
        
        $args = [
            'menu' => 'Main Menu',
            'theme_location' => 'main-nav'
        ];
    
        switch_to_blog( 1 );
    
        echo wp_nav_menu( $args );
    
        restore_current_blog();
    }