# get_active_blog_for_user()

URL: https://chugunov.pro/api-wordpress/functions/get_active_blog_for_user/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: MU (3.0.0).

## Сигнатура

```php
get_active_blog_for_user( int $user_id ): WP_Site|void
```

## Описание

Возвращает основной блог пользователя, если он есть и активен. Если он неактивен, функция возвращает другой активный блог пользователя. Если ни одного не найдено, пользователь добавляется как подписчик к блогу консоли, и возвращается этот блог.

## Параметры

- `$user_id` `int` — обязательный. Уникальный ID пользователя.

## Возвращаемое значение

`WP_Site|void`

## Исходный код

Файл: `wp-includes/ms-functions.php:45`

```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;
	}
}
```

## История изменений

- MU (3.0.0) — Introduced.

## Связанные

Использует: [`get_current_network_id`](https://chugunov.pro/api-wordpress/functions/get_current_network_id/), [`get_site`](https://chugunov.pro/api-wordpress/functions/get_site/), [`get_blogs_of_user`](https://chugunov.pro/api-wordpress/functions/get_blogs_of_user/), [`get_user_meta`](https://chugunov.pro/api-wordpress/functions/get_user_meta/), [`update_user_meta`](https://chugunov.pro/api-wordpress/functions/update_user_meta/), [`add_user_to_blog`](https://chugunov.pro/api-wordpress/functions/add_user_to_blog/), [`is_multisite`](https://chugunov.pro/api-wordpress/functions/is_multisite/), [`get_current_blog_id`](https://chugunov.pro/api-wordpress/functions/get_current_blog_id/), [`is_wp_error`](https://chugunov.pro/api-wordpress/functions/is_wp_error/).
Используется в: [`get_dashboard_url`](https://chugunov.pro/api-wordpress/functions/get_dashboard_url/), `WP_Admin_Bar::initialize`, `wp_xmlrpc_server::wp_getUsersBlogs`.

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/get_active_blog_for_user/
