여러 블로그를 실행하려면 매번 이전 블로그를 복원 할 필요가 없습니다. 성장하는 유일한 것은 $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()
각 스위치 후에 사용하면 전환에 필요한 시간이 두 배가됩니다.