Multisite: Introduce `get_subdirectory_reserved_names()`, which returns a filterable list of reserved subdirectory site names.

The function encapsulates the existing `subdirectory_reserved_names` filter and reduces the maintenance burden of keeping the value of (currently) two instances of the same hook in sync.

See #33615.


git-svn-id: https://develop.svn.wordpress.org/trunk@34854 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Drew Jaynes 2015-10-06 04:34:03 +00:00
parent a409a72e94
commit fe383af11a
2 changed files with 31 additions and 17 deletions

View File

@ -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: <code>%s</code>' ), implode( '</code>, <code>', $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: <code>%s</code>' ), implode( '</code>, <code>', $subdirectory_reserved_names ) ) );
}
}
$title = $blog['title'];

View File

@ -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 );
}