0

如何在前端/用户侧的 wordpress 多站点中创建具有所有网络站点菜单的单个/主导航菜单。

就像我在我的母站点和子站点中有一个管理页面一样,那么我如何将菜单管理员与站点 1 的子菜单管理、站点 2 的管理和所有...

我试过了,2-3个这样的代码

//存储当前正在查看的blog_id global $blog_id; $current_blog_id = $blog_id;

//切换到id为1的主博客 switch_to_blog(1);

wp_nav_menu();

//输出WordPress导航菜单 //wp_nav_menu(array('menu' => 'homepagemenu'));

//wp_nav_menu( //array( 'theme_location' => 'homepagemenu' ) //); // //

//切换回当前正在查看的博客 switch_to_blog($current_blog_id);

4

1 回答 1

1

您可以修改此插件的主要功能:http ://wordpress.org/plugins/hyper-admins/但是它将您的站点菜单添加到管理栏,而不是前端。

首先,您应该创建一个特定于站点的插件,它具有在您的网络中加载站点的功能:

function all_the_sites_menu() {
if ( ! is_super_admin() )
    return;

// Get all blog ids
global $wpdb;

$blog_ids = $wpdb->get_col( $wpdb->prepare( "
    SELECT blog_id 
    FROM {$wpdb->blogs}
    WHERE site_id = %d
    AND spam = '0'
    AND deleted = '0'
    AND archived = '0'
    ORDER BY registered DESC
", $wpdb->siteid ) );

    echo '<ul>'; //start the list

foreach ( $blog_ids as $blog_id ) {
    $blog_id = (int) $blog_id;
    $blog = get_blog_details( $blog_id );
    echo '<li><a href="http://' . $blog->siteurl . $blog->path .'">';
            echo $blog->blogname . '</a></li>';
}

    echo '</ul>'; //end the list

}

然后你可以在你的主题中插入一个标签来输出列表,如下所示:

<?php all_the_sites_menu(); ?>

于 2013-08-15T07:52:40.380 回答