我有一个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
答案 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()
如果您拥有庞大的网络,则会非常紧张。