diff --git a/src/wp-admin/network/site-new.php b/src/wp-admin/network/site-new.php
index bd3216bc75..7f91f9abb0 100644
--- a/src/wp-admin/network/site-new.php
+++ b/src/wp-admin/network/site-new.php
@@ -46,10 +46,11 @@ if ( isset($_REQUEST['action']) && 'add-site' == $_REQUEST['action'] ) {
// If not a subdomain install, make sure the domain isn't a reserved word
if ( ! is_subdomain_install() ) {
- /** This filter is documented in wp-includes/ms-functions.php */
- $subdirectory_reserved_names = apply_filters( 'subdirectory_reserved_names', array( 'page', 'comments', 'blog', 'embed', 'files', 'feed', 'wp-admin', 'wp-content', 'wp-includes', 'wp-json' ) );
- if ( in_array( $domain, $subdirectory_reserved_names ) )
- wp_die( sprintf( __('The following words are reserved for use by WordPress functions and cannot be used as blog names: %s
' ), implode( ', ', $subdirectory_reserved_names ) ) );
+ $subdirectory_reserved_names = get_subdirectory_reserved_names();
+
+ if ( in_array( $domain, $subdirectory_reserved_names ) ) {
+ wp_die( sprintf( __( 'The following words are reserved for use by WordPress functions and cannot be used as blog names: %s
' ), implode( '
, ', $subdirectory_reserved_names ) ) );
+ }
}
$title = $blog['title'];
diff --git a/src/wp-includes/ms-functions.php b/src/wp-includes/ms-functions.php
index b066a27c96..8c748e686f 100644
--- a/src/wp-includes/ms-functions.php
+++ b/src/wp-includes/ms-functions.php
@@ -555,19 +555,7 @@ function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) {
* spring them from jail.
*/
if ( ! is_subdomain_install() ) {
- $illegal_names = array_merge(
- $illegal_names,
- /**
- * Filter reserved site names on a sub-directory Multisite install.
- *
- * @since 3.0.0
- * @since 4.4.0 'wp-admin', 'wp-content', 'wp-includes', 'wp-json', and 'embed' were added
- * to the reserved names list.
- *
- * @param array $subdirectory_reserved_names Array of reserved names.
- */
- apply_filters( 'subdirectory_reserved_names', array( 'page', 'comments', 'blog', 'files', 'feed', 'wp-admin', 'wp-content', 'wp-includes', 'wp-json', 'embed' ) )
- );
+ $illegal_names = array_merge( $illegal_names, get_subdirectory_reserved_names() );
}
if ( empty( $blogname ) )
@@ -2468,3 +2456,28 @@ function wp_get_sites( $args = array() ) {
return $site_results;
}
+
+/**
+ * Retrieves a list of reserved site on a sub-directory Multisite install.
+ *
+ * @since 4.4.0
+ *
+ * @return array $names Array of reserved subdirectory names.
+ */
+function get_subdirectory_reserved_names() {
+ $names = array(
+ 'page', 'comments', 'blog', 'files', 'feed', 'wp-admin',
+ 'wp-content', 'wp-includes', 'wp-json', 'embed'
+ );
+
+ /**
+ * Filter reserved site names on a sub-directory Multisite install.
+ *
+ * @since 3.0.0
+ * @since 4.4.0 'wp-admin', 'wp-content', 'wp-includes', 'wp-json', and 'embed' were added
+ * to the reserved names list.
+ *
+ * @param array $subdirectory_reserved_names Array of reserved names.
+ */
+ return apply_filters( 'subdirectory_reserved_names', $names );
+}