get_active_blog_for_user()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
get_active_blog_for_user( int $user_id ): WP_Site|void
Описание
Возвращает основной блог пользователя, если он есть и активен. Если он неактивен, функция возвращает другой активный блог пользователя. Если ни одного не найдено, пользователь добавляется как подписчик к блогу консоли, и возвращается этот блог.
Оригинал (английский)
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.
Параметры
$user_id
int
обязательный
Возвращаемое значение
WP_Site|void
Исходный код
wp-includes/ms-functions.php:45
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. |

