如果要运行多个博客,则无需每次都恢复以前的博客。唯一增长的是$GLOBALS[\'_wp_switched_stack\']
– 一个带有博客ID的数组,无需担心。
但请记住,restore_current_blog()
will not work ( ! ! ! ) 在第二次切换之后,因为它使用的是上一个博客,而不是第一个博客。所以存储第一个博客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()
每次切换后,只需将切换所需的时间加倍。