我有一个WP Multisite,包含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时,我希望nav显示站点3中的页面
因此,每个站点的导航应该看起来像睡眠。
Site One | Site Two | Site Three
Site Three - page 1
Site Three - page 2
Site Three - page 3
SO网友:Sven
您在编写自己的查询以获取所有网站/博客方面做得很好,但您还可以使用一个特殊的WordPress功能:wp_get_sites()
如果你想从其他网站/博客获取内容,你必须首先切换switch_to_blog()
以确保查询将在正确的上下文中运行。(不要忘记使用restore_current_blog()
之后!)
话虽如此,我相应地更新了您的代码片段,因此您可以尝试一下:
<div class="navbar-collapse collapse">
<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
$args = array(
\'public\' => 1 // limit to public sites
);
$sites = wp_get_sites( $args );
$current = get_current_blog_id(); // current blog id
foreach ( $sites as $site ) :
$site_meta = get_blog_details( $site[\'blog_id\'] );
$current_class = $site[\'blog_id\'] == $current ? \' current\' : \'\'; // check for current site
echo \'<li class="menu-item\' . $current_class .\'" >\';
echo \'<a href="\' . $site_meta->siteurl . \'">\' . $site_meta->blogname . \' <i class="fa fa-chevron-right pull-right chervonMobNav"></i></a>\';
if ( $site[\'blog_id\'] == 4 ) : // check for special site
switch_to_blog( 4 ); // now switch to this site
$pages_args = array(
\'title_li\' => \'\',
\'depth\' => 0
);
echo \'<ul>\';
wp_list_pages( $pages_args );
echo \'</ul>\';
restore_current_blog(); // switch back to normal
endif;
echo \'</li>\';
endforeach;
?>
</ul>
</div><!--/.nav-collapse -->