如何在整个 multi-site 网络中显示主站点的主菜单
How to show primary menu of main site throughout multi-site network
我已成功将子站点的主导航菜单切换为显示主站点主导航。
但是,它呈现在 site-header 上方,而不是在代码中指定的菜单位置。
这是我目前拥有的代码:
function wp_multisite_nav_menu() {
global $blog_id;
}
if ( ! is_multisite() || 2 == $blog_id ) {
switch_to_blog( 1 );
wp_nav_menu( array(
'menu' => 2,
'fallback_cb' => false,
'menu_class' => 'genesis-nav-menu',
'theme_location' => 'Primary Navigation Menu',
));
restore_current_blog();
}
我原以为菜单会放在 'Primary Navigation Menu' 位置。
我错过了什么?
感谢任何清晰。
更新
我设法弄清楚了我的主菜单和二级菜单,但是如何将网站标题更改为主网站标题和超链接?
这是我目前拥有的代码减去了网站标题开关
//*Multisite global menus
//*Primary global menu
add_action('genesis_after_header', 'primary_menu_switch');
function primary_menu_switch() {
global $blog_id;
if ( ! is_multisite() || 2 == $blog_id ) {
switch_to_blog( 1 );
wp_nav_menu( array(
'menu' => 2,
'fallback_cb' => false,
'menu_class' => 'genesis-nav-menu',
'theme_location' => 'primary'
) );
restore_current_blog();
}
}
//*Secondary global menu
add_action('genesis_header_right', 'secondary_menu_switch');
function secondary_menu_switch() {
global $blog_id;
if ( ! is_multisite() || 2 == $blog_id ) {
switch_to_blog( 1 );
wp_nav_menu( array(
'menu' => 17,
'fallback_cb' => false,
'menu_class' => 'genesis-nav-menu menu-primary responsive-menu',
'theme_location' => 'primary'
));
restore_current_blog();
}
}
//*Use main site title
function site_title_switch() {
global $blog_id;
if ( ! is_multisite() || 2 == $blog_id ) {
switch_to_blog( 1 );
restore_current_blog();
}
}
我是一个完全的新手所以请原谅我的黑客工作。
感谢您的见解。
这是更新问题的答案,不是标题中的答案。
如果将其放入网络激活插件中,这应该可以解决问题。阅读评论以了解它到底做了什么。它可能不起作用,具体取决于您的主题是如何制作的。我是为二十一世纪的主题制作的。
请记住,它会在任何使用路径“/”调用它的地方更改主页 URL,而不仅仅是 header。
add_filter( 'option_blogname', 'function_to_filter_the_blogname' );
// Changes the blog name of all sites that are not the main one to the name of the main one, only outside of the admin panel
function function_to_filter_the_blogname( $name ) {
$main_site_id = get_main_site_id();
if ( get_current_blog_id() != $main_site_id && ! is_admin() ) {
return get_blog_option( $main_site_id, 'blogname' );
}
return $name;
}
add_filter( 'home_url', 'function_to_filter_the_home_url', 10, 4 );
// Changes the home URL of all sites that are not the main one to the home URL of the main one, only outside of the admin panel and only when the path is '/'
function function_to_filter_the_home_url( $url, $path, $orig_scheme, $blog_id ) {
$main_site_id = get_main_site_id();
if ( $blog_id != $main_site_id && ! is_admin() && '/' == $path ) {
return get_blog_option( $main_site_id, 'home' );
}
return $url;
}
我已成功将子站点的主导航菜单切换为显示主站点主导航。
但是,它呈现在 site-header 上方,而不是在代码中指定的菜单位置。
这是我目前拥有的代码:
function wp_multisite_nav_menu() {
global $blog_id;
}
if ( ! is_multisite() || 2 == $blog_id ) {
switch_to_blog( 1 );
wp_nav_menu( array(
'menu' => 2,
'fallback_cb' => false,
'menu_class' => 'genesis-nav-menu',
'theme_location' => 'Primary Navigation Menu',
));
restore_current_blog();
}
我原以为菜单会放在 'Primary Navigation Menu' 位置。
我错过了什么?
感谢任何清晰。
更新
我设法弄清楚了我的主菜单和二级菜单,但是如何将网站标题更改为主网站标题和超链接?
这是我目前拥有的代码减去了网站标题开关
//*Multisite global menus
//*Primary global menu
add_action('genesis_after_header', 'primary_menu_switch');
function primary_menu_switch() {
global $blog_id;
if ( ! is_multisite() || 2 == $blog_id ) {
switch_to_blog( 1 );
wp_nav_menu( array(
'menu' => 2,
'fallback_cb' => false,
'menu_class' => 'genesis-nav-menu',
'theme_location' => 'primary'
) );
restore_current_blog();
}
}
//*Secondary global menu
add_action('genesis_header_right', 'secondary_menu_switch');
function secondary_menu_switch() {
global $blog_id;
if ( ! is_multisite() || 2 == $blog_id ) {
switch_to_blog( 1 );
wp_nav_menu( array(
'menu' => 17,
'fallback_cb' => false,
'menu_class' => 'genesis-nav-menu menu-primary responsive-menu',
'theme_location' => 'primary'
));
restore_current_blog();
}
}
//*Use main site title
function site_title_switch() {
global $blog_id;
if ( ! is_multisite() || 2 == $blog_id ) {
switch_to_blog( 1 );
restore_current_blog();
}
}
我是一个完全的新手所以请原谅我的黑客工作。
感谢您的见解。
这是更新问题的答案,不是标题中的答案。
如果将其放入网络激活插件中,这应该可以解决问题。阅读评论以了解它到底做了什么。它可能不起作用,具体取决于您的主题是如何制作的。我是为二十一世纪的主题制作的。
请记住,它会在任何使用路径“/”调用它的地方更改主页 URL,而不仅仅是 header。
add_filter( 'option_blogname', 'function_to_filter_the_blogname' );
// Changes the blog name of all sites that are not the main one to the name of the main one, only outside of the admin panel
function function_to_filter_the_blogname( $name ) {
$main_site_id = get_main_site_id();
if ( get_current_blog_id() != $main_site_id && ! is_admin() ) {
return get_blog_option( $main_site_id, 'blogname' );
}
return $name;
}
add_filter( 'home_url', 'function_to_filter_the_home_url', 10, 4 );
// Changes the home URL of all sites that are not the main one to the home URL of the main one, only outside of the admin panel and only when the path is '/'
function function_to_filter_the_home_url( $url, $path, $orig_scheme, $blog_id ) {
$main_site_id = get_main_site_id();
if ( $blog_id != $main_site_id && ! is_admin() && '/' == $path ) {
return get_blog_option( $main_site_id, 'home' );
}
return $url;
}