switch_to_blog( int $new_blog, bool $deprecated = null )
Switch the current blog.
Description
This function is useful if you need to pull posts, or other information, from other blogs. You can switch back afterwards using restore_current_blog().
Things that aren’t switched:
- plugins. See https://core.trac.wordpress.org/ticket/14941
See also
Parameters
- $new_blog
-
(Required) The id of the blog you want to switch to. Default: current blog
- $deprecated
-
(Optional) Deprecated argument
Default value: null
Return
(true) Always returns True.
Source
File: wp-includes/ms-blogs.php
function switch_to_blog( $new_blog, $deprecated = null ) {
global $wpdb;
$blog_id = get_current_blog_id();
if ( empty( $new_blog ) ) {
$new_blog = $blog_id;
}
$GLOBALS['_wp_switched_stack'][] = $blog_id;
/*
* If we're switching to the same blog id that we're on,
* set the right vars, do the associated actions, but skip
* the extra unnecessary work
*/
if ( $new_blog == $blog_id ) {
/**
* Fires when the blog is switched.
*
* @since WP-MU (3.0.0)
*
* @param int $new_blog New blog ID.
* @param int $new_blog Blog ID.
*/
do_action( 'switch_blog', $new_blog, $new_blog );
$GLOBALS['switched'] = true;
return true;
}
$wpdb->set_blog_id( $new_blog );
$GLOBALS['table_prefix'] = $wpdb->get_blog_prefix();
$prev_blog_id = $blog_id;
$GLOBALS['blog_id'] = $new_blog;
if ( function_exists( 'wp_cache_switch_to_blog' ) ) {
wp_cache_switch_to_blog( $new_blog );
} 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' ) );
}
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, $prev_blog_id );
$GLOBALS['switched'] = true;
return true;
}
Changelog
Version | Description |
---|---|
WP-MU | Introduced. (3.0.0) |