restore_current_blog() WordPress Function
The restore_current_blog() function is a WordPress function that restores the current blog to its original state. This function is useful for resetting the current blog after making changes to it.
restore_current_blog() #
Restore the current blog, after calling switch_to_blog().
Description
See also
Return
(bool) True on success, false if we're already on the current blog.
More Information
restore_current_blog()
should be called after every switch_to_blog()
. If not, a global variable which monitors the switching, $GLOBALS['_wp_switched_stack']
, will not be empty even if you use switch_to_blog()
to return to the original blog. If $GLOBALS['_wp_switched_stack']
is not empty, WP will think it is in a switched state and can potentially return the wrong URL for the site via wp_upload_dir()
. See http://wordpress.stackexchange.com/a/123516/27757
When calling switch_to_blog()
repeatedly, either call restore_current_blog()
each time, or save the original blog ID until the end and call switch_to_blog()
with that and do:
$GLOBALS['_wp_switched_stack'] = array();
$GLOBALS['switched'] = false;
The former is probably preferable, as it is not a hack.
Source
File: wp-includes/ms-blogs.php
function restore_current_blog() { global $wpdb; if ( empty( $GLOBALS['_wp_switched_stack'] ) ) { return false; } $new_blog_id = array_pop( $GLOBALS['_wp_switched_stack'] ); $prev_blog_id = get_current_blog_id(); if ( $new_blog_id == $prev_blog_id ) { /** This filter is documented in wp-includes/ms-blogs.php */ do_action( 'switch_blog', $new_blog_id, $prev_blog_id, 'restore' ); // If we still have items in the switched stack, consider ourselves still 'switched'. $GLOBALS['switched'] = ! empty( $GLOBALS['_wp_switched_stack'] ); return true; } $wpdb->set_blog_id( $new_blog_id ); $GLOBALS['blog_id'] = $new_blog_id; $GLOBALS['table_prefix'] = $wpdb->get_blog_prefix(); if ( function_exists( 'wp_cache_switch_to_blog' ) ) { wp_cache_switch_to_blog( $new_blog_id ); } else { global $wp_object_cache; if ( is_object( $wp_object_cache ) && isset( $wp_object_cache->global_groups ) ) { $global_groups = $wp_object_cache->global_groups; } else { $global_groups = false; } wp_cache_init(); if ( function_exists( 'wp_cache_add_global_groups' ) ) { if ( is_array( $global_groups ) ) { wp_cache_add_global_groups( $global_groups ); } else { wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites', 'site-details', 'blog_meta' ) ); } wp_cache_add_non_persistent_groups( array( 'counts', 'plugins' ) ); } } /** This filter is documented in wp-includes/ms-blogs.php */ do_action( 'switch_blog', $new_blog_id, $prev_blog_id, 'restore' ); // If we still have items in the switched stack, consider ourselves still 'switched'. $GLOBALS['switched'] = ! empty( $GLOBALS['_wp_switched_stack'] ); return true; }
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
MU (3.0.0) | Introduced. |