2014-10-06 29 views
1

所有網頁我有一個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中的頁面,當我點擊該鏈接並轉到該站點時。

我想要的導航顯示在網站3的頁面,當我在現場1和站點2

所以在每個站點導航看起來應該像somne​​ting。

 Site One | Site Two | Site Three 

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

回答

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()是相當激烈的。