| | 125 | <?php |
| | 126 | // Site Language. |
| | 127 | |
| | 128 | /** |
| | 129 | * Filter the list of available languages for front-end site signups. |
| | 130 | * |
| | 131 | * Passing an empty array to this hook will effectively disable output of the setting |
| | 132 | * on the signup form, and the default language will be used when creating the site. |
| | 133 | * |
| | 134 | * Languages not already installed will be stripped. |
| | 135 | * |
| | 136 | * @since 4.4.0 |
| | 137 | * |
| | 138 | * @param array $available_languages Available languages. |
| | 139 | */ |
| | 140 | $languages = (array) apply_filters( 'signup_available_languages', get_available_languages() ); |
| | 141 | |
| | 142 | /* |
| | 143 | * Strip any not-installed languages. |
| | 144 | * |
| | 145 | * We re-call get_available_languages() here in case a language pack was installed |
| | 146 | * in the 'signup_available_languages' callback before this point. |
| | 147 | */ |
| | 148 | $languages = array_intersect_assoc( $languages, get_available_languages() ); |
| | 149 | |
| | 150 | if ( ! empty( $languages ) ) : |
| | 151 | ?> |
| | 152 | <p> |
| | 153 | <label for="site-language"><?php _e( 'Site Language:' ); ?></label> |
| | 154 | <?php |
| | 155 | // Network default. |
| | 156 | $lang = get_site_option( 'WPLANG' ); |
| | 157 | |
| | 158 | // Use English if the default isn't available. |
| | 159 | if ( ! in_array( $lang, $languages ) ) { |
| | 160 | $lang = ''; |
| | 161 | } |
| | 162 | |
| | 163 | wp_dropdown_languages( array( |
| | 164 | 'name' => 'WPLANG', |
| | 165 | 'id' => 'site-language', |
| | 166 | 'selected' => $lang, |
| | 167 | 'languages' => $languages, |
| | 168 | 'show_available_translations' => false, |
| | 169 | ) ); |
| | 170 | ?> |
| | 171 | </p> |
| | 172 | <?php endif; // Languages. ?> |
| | 173 | |
| | 383 | // Handle the language setting for the new site. |
| | 384 | if ( ! empty( $_POST['WPLANG'] ) ) { |
| | 385 | |
| | 386 | /** This filter is documented in wp-signup.php */ |
| | 387 | $languages = (array) apply_filters( 'signup_available_languages', get_available_languages() ); |
| | 388 | |
| | 389 | /* |
| | 390 | * Strip any not-installed languages. |
| | 391 | * |
| | 392 | * We re-call get_available_languages() here in case a language pack was installed |
| | 393 | * in the 'signup_available_languages' callback before this point. |
| | 394 | */ |
| | 395 | $installed_languages = array_intersect_assoc( $languages, get_available_languages() ); |
| | 396 | |
| | 397 | if ( in_array( $_POST['WPLANG'], $installed_languages ) ) { |
| | 398 | $language = wp_unslash( sanitize_text_field( $_POST['WPLANG'] ) ); |
| | 399 | |
| | 400 | if ( $language ) { |
| | 401 | $blog_meta_defaults['WPLANG'] = $language; |
| | 402 | } |
| | 403 | } |
| | 404 | |
| | 405 | } |
| | 406 | |