1

我有一个包含 3 个站点的 WP 多站点 - 站点 1、2、3

站点 1 和 2 只是一页,但站点 3 里面有多个页面。

我想在每个站点的顶部显示到其他站点的导航。

我还想在每个页面上显示站点 3 中的子页面。

我在这里使用此代码为所有站点创建导航。

        <div class="navbar-collapse collapse">
          <?php

          $the_blog_id = get_current_blog_id();

          $bcount = get_blog_count();

            global $wpdb;
            $blogs = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->blogs WHERE spam = '0' AND deleted = '0' and archived = '0' and public='1'",13, 'stack overflow'));

            echo($blogs->blogname);

            if(!empty($blogs)){
                ?>
                  <ul class="nav navbar-nav">
                    <li class="portalHome"><a href="dashboard.html">
                    <i class="fa fa-home"></i>
                    <i class="fa fa-chevron-right pull-right chervonMobNav"></i></a></li>
                <?php
                foreach($blogs as $blog){
                    $details = get_blog_details($blog->blog_id);

                    if($details != false){
                        $addr = $details->siteurl;
                        $name = $details->blogname;
                        $id = $details->blog_id;

                        //echo $name ." is blog ". $id." / ";

                        if(!(($blog->blog_id == 2)&&($show_main != 1))){

                        $class = ( $blog->blog_id == get_current_blog_id() ) ? ' current-site' : '';

                        ?>
                            <li class="menu-item<?php echo $class; ?>" > 
                                <a href="<?php echo $addr; ?>"><?php echo $name;?> <i class="fa fa-chevron-right pull-right chervonMobNav"></i></a>

                                <?php
                                if($blog->blog_id == 4){
                                    echo 'here';
                                    //show the nav for blog 4

                                    $pages_args = array(
                                        'title_li' => '',
                                        'depth' => 0

                                    );

                                    wp_list_pages($pages_args);

                                }
                                ?>

                            </li>

                        <?php
                        }
                    }
                }
                ?>
                </ul>
                <?php
            }
            ?>
        </div><!--/.nav-collapse -->

这里的问题是,当我单击该链接并转到该站点时,它仅显示站点 3 中的页面。

当我在站点 1 和站点 2 上时,我希望导航显示站点 3 中的页面

所以每个站点的导航应该看起来像 somne​​ting。

        Site One | Site Two | Site Three

                                Site Three - page 1
                                Site Three - page 2
                                Site Three - page 3
4

1 回答 1

1

这不起作用的原因是 wp_list_pages() 将显示您正在查看的当前博客的页面。当您加载页面以填充导航时,您需要在博客之间切换。像这样的东西:

$current_blog_id = get_current_blog_id();
foreach( $blogs as $blog ) {
    switch_to_blog( $blog[ 'blog_id' ] );
    /* your current code here */
}
switch_to_blog( $current_blog_id );

还有一个非常棒的单页插件,名为“ Networkwide Menu ”,可以满足您的需求。这个插件的好处是它缓存了结果,switch_to_blog()如果你有一个大的网络,这使得网站加载速度更快,因为这是相当密集的过程。

于 2014-10-06T14:54:54.837 回答