get_blogs_of_user( int $user_id, bool $all = false ): object[]

Gets the sites a user belongs to.

Parameters

$user_idintrequired
User ID
$allbooloptional
Whether to retrieve all sites, or only sites that are not marked as deleted, archived, or spam.

Default:false

Return

object[] A list of the user’s sites. An empty array if the user doesn’t exist or belongs to no sites.

Source

function get_blogs_of_user( $user_id, $all = false ) {	global $wpdb;	$user_id = (int) $user_id;	// Logged out users can't have sites.	if ( empty( $user_id ) ) {	return array();	}	/** * Filters the list of a user's sites before it is populated. * * Returning a non-null value from the filter will effectively short circuit * get_blogs_of_user(), returning that value instead. * * @since 4.6.0 * * @param null|object[] $sites An array of site objects of which the user is a member. * @param int $user_id User ID. * @param bool $all Whether the returned array should contain all sites, including * those marked 'deleted', 'archived', or 'spam'. Default false. */	$sites = apply_filters( 'pre_get_blogs_of_user', null, $user_id, $all );	if ( null !== $sites ) {	return $sites;	}	$keys = get_user_meta( $user_id );	if ( empty( $keys ) ) {	return array();	}	if ( ! is_multisite() ) {	$site_id = get_current_blog_id();	$sites = array( $site_id => new stdClass() );	$sites[ $site_id ]->userblog_id = $site_id;	$sites[ $site_id ]->blogname = get_option( 'blogname' );	$sites[ $site_id ]->domain = '';	$sites[ $site_id ]->path = '';	$sites[ $site_id ]->site_id = 1;	$sites[ $site_id ]->siteurl = get_option( 'siteurl' );	$sites[ $site_id ]->archived = 0;	$sites[ $site_id ]->spam = 0;	$sites[ $site_id ]->deleted = 0;	return $sites;	}	$site_ids = array();	if ( isset( $keys[ $wpdb->base_prefix . 'capabilities' ] ) && defined( 'MULTISITE' ) ) {	$site_ids[] = 1;	unset( $keys[ $wpdb->base_prefix . 'capabilities' ] );	}	$keys = array_keys( $keys );	foreach ( $keys as $key ) {	if ( ! str_ends_with( $key, 'capabilities' ) ) {	continue;	}	if ( $wpdb->base_prefix && ! str_starts_with( $key, $wpdb->base_prefix ) ) {	continue;	}	$site_id = str_replace( array( $wpdb->base_prefix, '_capabilities' ), '', $key );	if ( ! is_numeric( $site_id ) ) {	continue;	}	$site_ids[] = (int) $site_id;	}	$sites = array();	if ( ! empty( $site_ids ) ) {	$args = array(	'number' => '',	'site__in' => $site_ids,	);	if ( ! $all ) {	$args['archived'] = 0;	$args['spam'] = 0;	$args['deleted'] = 0;	}	$_sites = get_sites( $args );	foreach ( $_sites as $site ) {	$sites[ $site->id ] = (object) array(	'userblog_id' => $site->id,	'blogname' => $site->blogname,	'domain' => $site->domain,	'path' => $site->path,	'site_id' => $site->network_id,	'siteurl' => $site->siteurl,	'archived' => $site->archived,	'mature' => $site->mature,	'spam' => $site->spam,	'deleted' => $site->deleted,	);	}	}	/** * Filters the list of sites a user belongs to. * * @since MU (3.0.0) * * @param object[] $sites An array of site objects belonging to the user. * @param int $user_id User ID. * @param bool $all Whether the returned sites array should contain all sites, including * those marked 'deleted', 'archived', or 'spam'. Default false. */	return apply_filters( 'get_blogs_of_user', $sites, $user_id, $all ); } 

Hooks

apply_filters( ‘get_blogs_of_user’, object[] $sites, int $user_id, bool $all )

Filters the list of sites a user belongs to.

apply_filters( ‘pre_get_blogs_of_user’, null|object[] $sites, int $user_id, bool $all )

Filters the list of a user’s sites before it is populated.

Changelog

VersionDescription
4.7.0Converted to use get_sites().
3.0.0Introduced.

User Contributed Notes

  1. Skip to note 2 content
    $sites = get_blogs_of_user( $user_id ); var_export( $sites );

    Output:

    array ( 15 => (object) array( 'userblog_id' => 15, 'blogname' => 'sub-site-A', 'domain' => 'primarysite.test', 'path' => '/site-a/', 'site_id' => 1, 'siteurl' => 'http://primarysite.test/site-a', 'archived' => '0', 'mature' => '0', 'spam' => '0', 'deleted' => '0', ), 26 => (object) array( 'userblog_id' => 26, 'blogname' => 'sub-site-B', 'domain' => 'primarysite.test', 'path' => '/site-b/', 'site_id' => 1, 'siteurl' => 'http://primarysite.test/site-b', 'archived' => '0', 'mature' => '0', 'spam' => '0', 'deleted' => '0', ), )

You must log in before being able to contribute a note or feedback.