switch_to_blog

Definition:
function switch_to_blog( $new_blog, $validate = false ) {}

Switch the current blog.
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().

Parameters

  • int $new_blog: The id of the blog you want to switch to. Default: current blog
  • bool $validate: Whether to check if $new_blog exists before proceeding

Return values

returns:True on success, False if the validation failed

Defined actions

  • switch_blog
    do_action( 'switch_blog', $blog_id, $blog_id );
  • switch_blog
    do_action('switch_blog', $blog_id, $prev_blog_id);

Source code

function switch_to_blog( $new_blog, $validate = false ) {

	global $wpdb, $table_prefix, $blog_id, $switched, $switched_stack, $wp_roles, $wp_object_cache;



	if ( empty($new_blog) )

		$new_blog = $blog_id;



	if ( $validate && ! get_blog_details( $new_blog ) )

		return false;



	if ( empty($switched_stack) )

		$switched_stack = array();



	$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 ( $blog_id == $new_blog ) {

		do_action( 'switch_blog', $blog_id, $blog_id );

		$switched = true;

		return true;

	}



	$wpdb->set_blog_id($new_blog);

	$table_prefix = $wpdb->prefix;

	$prev_blog_id = $blog_id;

	$blog_id = $new_blog;



	if ( is_object( $wp_roles ) ) {

		$wpdb->suppress_errors();

		if ( method_exists( $wp_roles ,'_init' ) )

			$wp_roles->_init();

		elseif ( method_exists( $wp_roles, '__construct' ) )

			$wp_roles->__construct();

		$wpdb->suppress_errors( false );

	}



	if ( did_action('init') ) {

		$current_user = wp_get_current_user();

		if ( is_object( $current_user ) )

			$current_user->for_blog( $blog_id );

	}



	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', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts' ) );

		wp_cache_add_non_persistent_groups(array( 'comment', 'counts', 'plugins' ));

	}



	do_action('switch_blog', $blog_id, $prev_blog_id);

	$switched = true;

	return true;

}

2925

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: