多站点列出站点中的所有页面

时间:2014-10-06 13:36:31

标签: wordpress navigation multisite

我有一个WP多站点,其中包含3个站点 - 站点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中的网页

因此,每个网站的导航应该看起来像。

        Site One | Site Two | Site Three

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

1 个答案:

答案 0 :(得分: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 );

还有一个非常好的单页插件名为&#34; Networkwide Menu&#34;这可以做你想做的事。这个插件的优点是它可以缓存结果,使得网站加载速度更快,因为switch_to_blog()如果您拥有庞大的网络,则会非常紧张。