यदि आप कई ब्लॉगों को चलाना चाहते हैं, तो हर बार पिछले ब्लॉग को पुनर्स्थापित करने की कोई आवश्यकता नहीं है। केवल एक चीज जो बढ़ती है वह है $GLOBALS['_wp_switched_stack']
- ब्लॉग आईडी के साथ एक सरणी, चिंता की कोई बात नहीं है।
लेकिन ध्यान रखें, दूसरे स्विच के बाद अब restore_current_blog()
(!) काम नहीं करेगा , क्योंकि यह पिछले ब्लॉग का उपयोग करता है - जो तब पहला ब्लॉग नहीं था । इसलिए पहले ब्लॉग आईडी को स्टोर करें, और कॉल करें ...
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()
प्रत्येक स्विच के बाद का उपयोग उस समय को दोगुना कर देता है जो केवल स्विच करने के लिए आवश्यक है।