Index: src/wp-includes/class-wp-site.php
===================================================================
--- src/wp-includes/class-wp-site.php	(revision 37906)
+++ src/wp-includes/class-wp-site.php	(working copy)
@@ -218,6 +218,7 @@
 	 * Getter.
 	 *
 	 * Allows current multisite naming conventions when getting properties.
+	 * Allows access to extended site properties.
 	 *
 	 * @since 4.6.0
 	 * @access public
@@ -235,6 +236,15 @@
 				return $this->site_id;
 			case 'network_id':
 				return (int) $this->site_id;
+			case 'blogname':
+			case 'siteurl':
+			case 'post_count':
+			case 'home':
+				if ( ! did_action( 'ms_loaded' ) ) {
+					return null;
+				}
+				$details = $this->get_details();
+				return $details->$key;
 		}
 
 		return null;
@@ -244,6 +254,7 @@
 	 * Isset-er.
 	 *
 	 * Allows current multisite naming conventions when checking for properties.
+	 * Checks for extended site properties.
 	 *
 	 * @since 4.6.0
 	 * @access public
@@ -258,6 +269,14 @@
 			case 'site_id':
 			case 'network_id':
 				return true;
+			case 'blogname':
+			case 'siteurl':
+			case 'post_count':
+			case 'home':
+				if ( ! did_action( 'ms_loaded' ) ) {
+					return false;
+				}
+				return true;
 		}
 
 		return false;
@@ -288,4 +307,58 @@
 				$this->$key = $value;
 		}
 	}
+
+	/**
+	 * Retrieve the details for this site.
+	 *
+	 * This method is used internally to lazy-load the extended properties of a site.
+	 *
+	 * @since 4.6.0
+	 * @access private
+	 *
+	 * @see WP_Site::__get()
+	 *
+	 * @return object A raw site object with all details included.
+	 */
+	private function get_details() {
+		$details = wp_cache_get( $this->blog_id, 'site-details' );
+
+		if ( false === $details ) {
+
+			switch_to_blog( $this->blog_id );
+			// Create a raw copy of the object for backwards compatibility with the filter below.
+			$details = new stdClass();
+			foreach ( get_object_vars( $this ) as $key => $value ) {
+				$details->$key = $value;
+			}
+			$details->blogname   = get_option( 'blogname' );
+			$details->siteurl    = get_option( 'siteurl' );
+			$details->post_count = get_option( 'post_count' );
+			$details->home       = get_option( 'home' );
+			restore_current_blog();
+
+			$cache_details = true;
+			foreach ( array( 'blogname', 'siteurl', 'post_count', 'home' ) as $field ) {
+				if ( false === $details->$field ) {
+					$cache_details = false;
+					break;
+				}
+			}
+
+			if ( $cache_details ) {
+				wp_cache_set( $this->blog_id, $details, 'site-details' );
+			}
+		}
+
+		/**
+		 * Filters a site's extended properties.
+		 *
+		 * @since 4.6.0
+		 *
+		 * @param object $details The site details.
+		 */
+		$details = apply_filters( 'site_details', $details );
+
+		return $details;
+	}
 }
Index: src/wp-includes/load.php
===================================================================
--- src/wp-includes/load.php	(revision 37906)
+++ src/wp-includes/load.php	(working copy)
@@ -509,7 +509,7 @@
 		wp_cache_init();
 
 	if ( function_exists( 'wp_cache_add_global_groups' ) ) {
-		wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites' ) );
+		wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'site-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites' ) );
 		wp_cache_add_non_persistent_groups( array( 'counts', 'plugins' ) );
 	}
 }
Index: src/wp-includes/ms-blogs.php
===================================================================
--- src/wp-includes/ms-blogs.php	(revision 37906)
+++ src/wp-includes/ms-blogs.php	(working copy)
@@ -455,6 +455,7 @@
 	$domain_path_key = md5( $blog->domain . $blog->path );
 
 	wp_cache_delete( $blog_id, 'sites' );
+	wp_cache_delete( $blog_id, 'site-details' );
 	wp_cache_delete( $blog_id , 'blog-details' );
 	wp_cache_delete( $blog_id . 'short' , 'blog-details' );
 	wp_cache_delete(  $domain_path_key, 'blog-lookup' );
@@ -822,7 +823,7 @@
 			if ( is_array( $global_groups ) ) {
 				wp_cache_add_global_groups( $global_groups );
 			} else {
-				wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites' ) );
+				wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites', 'site-details' ) );
 			}
 			wp_cache_add_non_persistent_groups( array( 'counts', 'plugins' ) );
 		}
@@ -893,7 +894,7 @@
 			if ( is_array( $global_groups ) ) {
 				wp_cache_add_global_groups( $global_groups );
 			} else {
-				wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites' ) );
+				wp_cache_add_global_groups( array( 'users', 'userlogins', 'usermeta', 'user_meta', 'useremail', 'userslugs', 'site-transient', 'site-options', 'site-lookup', 'blog-lookup', 'blog-details', 'rss', 'global-posts', 'blog-id-cache', 'networks', 'sites', 'site-details' ) );
 			}
 			wp_cache_add_non_persistent_groups( array( 'counts', 'plugins' ) );
 		}
Index: src/wp-includes/ms-settings.php
===================================================================
--- src/wp-includes/ms-settings.php	(revision 37906)
+++ src/wp-includes/ms-settings.php	(working copy)
@@ -104,3 +104,10 @@
 
 // Define upload directory constants
 ms_upload_constants();
+
+/**
+ * Fires after the current site and network have been detected and loaded.
+ *
+ * @since 4.6.0
+ */
+do_action( 'ms_loaded' );
