wpseek.com
A WordPress-centric search engine for devs and theme authors



switch_to_blog › WordPress Function

Sincen/a
Deprecatedn/a
switch_to_blog ( $new_blog_id, $deprecated = null )
Parameters: (2)
  • (int) $new_blog_id The ID of the blog to switch to. Default: current blog.
    Required: Yes
  • (bool) $deprecated Not used.
    Required: No
    Default: null
See:
Returns:
  • (true) Always returns true.
Defined at:
Codex:
Change Log:
  • MU

Switches 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(). PHP code loaded with the originally requested site, such as code from a plugin or theme, does not switch. See #14941.


Source

function switch_to_blog( $new_blog_id, $deprecated = null ) {
	global $wpdb;

	$prev_blog_id = get_current_blog_id();
	if ( empty( $new_blog_id ) ) {
		$new_blog_id = $prev_blog_id;
	}

	$GLOBALS['_wp_switched_stack'][] = $prev_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_id === $prev_blog_id ) {
		/**
		 * Fires when the blog is switched.
		 *
		 * @since MU (3.0.0)
		 * @since 5.4.0 The `$context` parameter was added.
		 *
		 * @param int    $new_blog_id  New blog ID.
		 * @param int    $prev_blog_id Previous blog ID.
		 * @param string $context      Additional context. Accepts 'switch' when called from switch_to_blog()
		 *                             or 'restore' when called from restore_current_blog().
		 */
		do_action( 'switch_blog', $new_blog_id, $prev_blog_id, 'switch' );

		$GLOBALS['switched'] = true;

		return true;
	}

	$wpdb->set_blog_id( $new_blog_id );
	$GLOBALS['table_prefix'] = $wpdb->get_blog_prefix();
	$GLOBALS['blog_id']      = $new_blog_id;

	wp_cache_switch_to_blog( $new_blog_id );

	/** This filter is documented in wp-includes/ms-blogs.php */
	do_action( 'switch_blog', $new_blog_id, $prev_blog_id, 'switch' );

	$GLOBALS['switched'] = true;

	return true;
}