Title: get_active_blog_for_user
Published: April 25, 2014
Last modified: May 20, 2026

---

# get_active_blog_for_user( int $user_id ): 󠀁[WP_Site](https://developer.wordpress.org/reference/classes/wp_site/)󠁿|void

## In this article

 * [Description](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#description)
 * [Parameters](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#wp--skip-link--target)

Gets one of a user’s active blogs.

## 󠀁[Description](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#description)󠁿

Returns the user’s primary blog, if they have one and it is active. If it’s inactive,
function returns another active blog of the user. If none are found, the user is
added as a Subscriber to the Dashboard Blog and that blog is returned.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#parameters)󠁿

 `$user_id`intrequired

The unique ID of the user

## 󠀁[Return](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#return)󠁿

 [WP_Site](https://developer.wordpress.org/reference/classes/wp_site/)|void The 
blog object

## 󠀁[Source](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#source)󠁿

    ```php
    function get_active_blog_for_user( $user_id ) {
    	$blogs = get_blogs_of_user( $user_id );
    	if ( empty( $blogs ) ) {
    		return;
    	}

    	if ( ! is_multisite() ) {
    		return $blogs[ get_current_blog_id() ];
    	}

    	$primary_blog = get_user_meta( $user_id, 'primary_blog', true );
    	$first_blog   = current( $blogs );
    	if ( false !== $primary_blog ) {
    		if ( ! isset( $blogs[ $primary_blog ] ) ) {
    			update_user_meta( $user_id, 'primary_blog', $first_blog->userblog_id );
    			$primary = get_site( $first_blog->userblog_id );
    		} else {
    			$primary = get_site( $primary_blog );
    		}
    	} else {
    		// TODO: Review this call to add_user_to_blog too - to get here the user must have a role on this blog?
    		$result = add_user_to_blog( $first_blog->userblog_id, $user_id, 'subscriber' );

    		if ( ! is_wp_error( $result ) ) {
    			update_user_meta( $user_id, 'primary_blog', $first_blog->userblog_id );
    			$primary = $first_blog;
    		}
    	}

    	if ( ( ! is_object( $primary ) )
    		|| ( '1' === $primary->archived || '1' === $primary->spam || '1' === $primary->deleted )
    	) {
    		$blogs = get_blogs_of_user( $user_id, true ); // If a user's primary blog is shut down, check their other blogs.
    		$ret   = false;

    		if ( is_array( $blogs ) && count( $blogs ) > 0 ) {
    			$current_network_id = get_current_network_id();

    			foreach ( (array) $blogs as $blog_id => $blog ) {
    				if ( $blog->site_id !== $current_network_id ) {
    					continue;
    				}

    				$details = get_site( $blog_id );
    				if ( is_object( $details )
    					&& '0' === $details->archived && '0' === $details->spam && '0' === $details->deleted
    				) {
    					$ret = $details;
    					if ( (int) get_user_meta( $user_id, 'primary_blog', true ) !== $blog_id ) {
    						update_user_meta( $user_id, 'primary_blog', $blog_id );
    					}
    					if ( ! get_user_meta( $user_id, 'source_domain', true ) ) {
    						update_user_meta( $user_id, 'source_domain', $details->domain );
    					}
    					break;
    				}
    			}
    		} else {
    			return;
    		}

    		return $ret;
    	} else {
    		return $primary;
    	}
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/ms-functions.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/ms-functions.php#L45)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/ms-functions.php#L45-L110)

## 󠀁[Related](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#related)󠁿

| Uses | Description | 
| [get_current_network_id()](https://developer.wordpress.org/reference/functions/get_current_network_id/)`wp-includes/load.php` |

Retrieves the current network ID.

  | 
| [get_site()](https://developer.wordpress.org/reference/functions/get_site/)`wp-includes/ms-site.php` |

Retrieves site data given a site ID or site object.

  | 
| [get_blogs_of_user()](https://developer.wordpress.org/reference/functions/get_blogs_of_user/)`wp-includes/user.php` |

Gets the sites a user belongs to.

  | 
| [get_user_meta()](https://developer.wordpress.org/reference/functions/get_user_meta/)`wp-includes/user.php` |

Retrieves user meta field for a user.

  | 
| [update_user_meta()](https://developer.wordpress.org/reference/functions/update_user_meta/)`wp-includes/user.php` |

Updates user meta field based on user ID.

  | 
| [add_user_to_blog()](https://developer.wordpress.org/reference/functions/add_user_to_blog/)`wp-includes/ms-functions.php` |

Adds a user to a blog, along with specifying the user’s role.

  | 
| [is_multisite()](https://developer.wordpress.org/reference/functions/is_multisite/)`wp-includes/load.php` |

Determines whether Multisite is enabled.

  | 
| [get_current_blog_id()](https://developer.wordpress.org/reference/functions/get_current_blog_id/)`wp-includes/load.php` |

Retrieves the current site ID.

  | 
| [is_wp_error()](https://developer.wordpress.org/reference/functions/is_wp_error/)`wp-includes/load.php` |

Checks whether the given variable is a WordPress Error.

  |

[Show 4 more](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#)

| Used by | Description | 
| [get_dashboard_url()](https://developer.wordpress.org/reference/functions/get_dashboard_url/)`wp-includes/link-template.php` |

Retrieves the URL to the user’s dashboard.

  | 
| [WP_Admin_Bar::initialize()](https://developer.wordpress.org/reference/classes/wp_admin_bar/initialize/)`wp-includes/class-wp-admin-bar.php` |

Initializes the admin bar.

  | 
| [wp_xmlrpc_server::wp_getUsersBlogs()](https://developer.wordpress.org/reference/classes/wp_xmlrpc_server/wp_getusersblogs/)`wp-includes/class-wp-xmlrpc-server.php` |

Retrieves the blogs of the user.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/get_active_blog_for_user/?output_format=md#changelog)󠁿

| Version | Description | 
| [MU (3.0.0)](https://developer.wordpress.org/reference/since/mu.3.0.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fget_active_blog_for_user%2F)
before being able to contribute a note or feedback.