get_blogs_of_user() – Gets the sites a user belongs to.

You appear to be a bot. Output may be restricted

Description

Gets the sites a user belongs to.

Usage

$object[] = get_blogs_of_user( $user_id, $all );

Parameters

$user_id
( int ) required – User ID
$all
( bool ) optional – Whether to retrieve all sites, or only sites that are not marked as deleted, archived, or spam.

Returns

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

Source

File name: wordpress/wp-includes/user.php


Lines:

1 to 100 of 119
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,

 View on GitHub View on Trac