I’ve been messing with this sort of issue for pretty much the whole day and I think I have figured out how to create a basic menu for each “child” site based on one “master” menu on the main site (or even any other site you choose to place it).
It might take us a bit of hashing to get it to work right because I am in the infancy of the operation, but I’m pleased with my results so far.
The key is to utilize the same underlying theme for all sites (which it appears you are doing to “brand” the child sites as I am). I personally like to use two custom menus: public-menu and user-menu. Obviously one is for logged in users and the other is for anonymous users.
What we need to do is tell each child site where to look as it builds its menu structure. I’m sure you have discovered that even if you name all the menus on each child site the same, it creates its own instance of that menu (which defaults to blank). As a caveat, I have been messing around with changing the default structure of the menus as well, but haven’t had much luck.
Anyway, in the header when you call your custom menu, add a switch_to_blog
call in before you load the menu. This will make the server call up the same menu on all child sites. The unfortunate part is that the user then is unable to add new menu options or make changes. I’m still working on that part. The cool part is that the child sites aren’t required to have any menus defined at all.
Here is the code I have in my header:
<?php if (is_user_logged_in()) {
switch_to_blog(1);
wp_nav_menu(array(
'echo' => true,
'theme_location' => 'user-menu',
'container_class' => 'nav-center'
));
restore_current_blog();
} else {
switch_to_blog(1);
wp_nav_menu(array(
'echo' => true,
'theme_location' => 'public-menu',
'container_class' => 'nav-center'
));
restore_current_blog();
} ?>
Does this help?