如果要运行多个博客,则无需每次都还原以前的博客。唯一增长的是$GLOBALS['_wp_switched_stack']
–具有博客ID的数组,无需担心。
但是请记住,在第二次切换restore_current_blog()
后将不再起作用(!!!),因为它使用的是先前的博客-当时不是第一个博客。因此,存储第一个博客ID,然后致电…
switch_to_blog( $first_blog_id );
unset ( $GLOBALS['_wp_switched_stack'] );
$GLOBALS['switched'] = false;
…而不是restore_current_blog()
完成时。必须重置全局变量,否则您将遇到@ user42826提到的问题。
性能影响巨大。我在具有12个站点的本地安装上运行了一些测试:
$sites = wp_get_sites();
print '<pre>' . count( $sites ) . " sites\n";
timer_start();
print 'With restore_current_blog(): ';
foreach ( $sites as $site ) {
switch_to_blog( $site[ 'blog_id' ] );
restore_current_blog();
}
timer_stop( 1, 9 );
print "\nWithout restore_current_blog(): ";
timer_start();
$current_site = get_current_blog_id();
foreach ( $sites as $site ) {
switch_to_blog( $site[ 'blog_id' ] );
}
switch_to_blog( $current_site );
$GLOBALS['_wp_switched_stack'] = array();
$GLOBALS['switched'] = FALSE;
timer_stop( 1, 9 );
print '</pre>';
结果:
12 sites
With restore_current_blog(): 0.010648012
Without restore_current_blog(): 0.005203962
restore_current_blog()
在每个开关之后使用,会使切换所需的时间加倍。