Limit multisite/network site names to a property of the user

Looking at the source of wp-signup.php, it looks like your best bet might be to filter signup_blog_init (line 303 in v. 3.5.1):

/*
add_filter( 'signup_blog_init', 'wpse103022_blog_name' );
function wpse103022_blog_name( $blog_details ) {
    // Set $username to the user's username
    $blog_details['blogname'] = $username;
    return $blog_details;
}
*/
// see code below for replacement

I’m not 100% sure this will work, but it’s worth a try.

Edited

OK, after your comment below, I took a look at validate_blog_signup(). It calls wpmu_validate_blog_signup(), and that provides a filter — wpmu_validate_blog_signup. Looking at the code, it appears that something like the following should work:

add_filter( 'wpmu_validate_blog_signup', 'wpse103039_blog_name' );
function wpse103039_blog_name( $blog_details ) {
    $blog_details['path'] = "https://wordpress.stackexchange.com/" . $desired_blogname; // however you get it
    return $blog_details;
}

If I’m reading the code right, you can filter:

  • domain
  • path
  • blogname
  • blog_title
  • user
  • errors