Remove all site capability keys when retrieving user meta for super admin

<?php 
/**
 * Remove all site capability keys when retrieving user meta
 * This prevents `get_blog_details` lookups for all the sites
 * a super admin is a member or admin
 *
 * @link  https://core.trac.wordpress.org/ticket/31746#comment:1 get_blogs_of_user() can be very slow when a user is a member of thousands of sites
 */
function large_network_skip_get_blogs_of_user_with_many_sites( $null, $object_id, $meta_key ) {
    global $wpdb;

    // Don't proceed if fetching a specific meta key, or the current user is not a super admin
    if ( $meta_key || ! is_super_admin() ) {
        return $null;
    }

    // Ok, then fetch all the user meta (remove this filter to do so)
    remove_filter( 'get_user_metadata', __FUNCTION__, 10, 4 );
    $keys = get_user_meta( $object_id );
    add_filter( 'get_user_metadata', __FUNCTION__, 10, 4 );

    // And loop through them
    foreach ( $keys as $key => $value ) {
        // Ignore non-capability meta keys
        if ( 'capabilities' !== substr( $key, -12 ) ) {
            continue;
        }

        // Ignore meta keys w/o the base_prefix
        if ( $wpdb->base_prefix && 0 !== strpos( $key, $wpdb->base_prefix ) ) {
            continue;
        }

        // Attempt to get the blog id from the string
        $blog_id = str_replace( array( $wpdb->base_prefix, '_capabilities' ), '', $key );

        // If it's not numeric, ignore this too
        if ( ! is_numeric( $blog_id ) ) {
            continue;
        }

        // Ok, let's black-list this capability meta from being sent back
        unset( $keys[ $key ] );
    }

    return $keys;
}
add_filter( 'get_user_metadata', 'large_network_skip_get_blogs_of_user_with_many_sites', 10, 3 );