diff --git a/src/wp-includes/ms-default-constants.php b/src/wp-includes/ms-default-constants.php
index 8cbd2c35af..c8dd091c0a 100644
--- a/src/wp-includes/ms-default-constants.php
+++ b/src/wp-includes/ms-default-constants.php
@@ -114,17 +114,20 @@ function ms_file_constants() {
* we will have translations loaded and can trigger warnings easily.
*
* @since 3.0.0
+ *
+ * @global boolean $subdomain_error
+ * @global boolean $subdomain_error_warn
*/
function ms_subdomain_constants() {
- static $error = null;
- static $error_warn = false;
+ global $subdomain_error, $subdomain_error_warn;
- if ( false === $error )
+ if ( false === $subdomain_error ) {
return;
+ }
- if ( $error ) {
+ if ( $subdomain_error ) {
$vhost_deprecated = __( 'The constant VHOST
is deprecated. Use the boolean constant SUBDOMAIN_INSTALL
in wp-config.php to enable a subdomain configuration. Use is_subdomain_install() to check whether a subdomain configuration is enabled.' );
- if ( $error_warn ) {
+ if ( $subdomain_error_warn ) {
trigger_error( __( 'Conflicting values for the constants VHOST and SUBDOMAIN_INSTALL. The value of SUBDOMAIN_INSTALL will be assumed to be your subdomain configuration setting.' ) . ' ' . $vhost_deprecated, E_USER_WARNING );
} else {
_deprecated_argument( 'define()', '3.0', $vhost_deprecated );
@@ -133,17 +136,18 @@ function ms_subdomain_constants() {
}
if ( defined( 'SUBDOMAIN_INSTALL' ) && defined( 'VHOST' ) ) {
- if ( SUBDOMAIN_INSTALL == ( 'yes' == VHOST ) ) {
- $error = true;
- } else {
- $error = $error_warn = true;
+ $subdomain_error = true;
+ if ( SUBDOMAIN_INSTALL !== ( 'yes' == VHOST ) ) {
+ $subdomain_error_warn = true;
}
} elseif ( defined( 'SUBDOMAIN_INSTALL' ) ) {
+ $subdomain_error = false;
define( 'VHOST', SUBDOMAIN_INSTALL ? 'yes' : 'no' );
} elseif ( defined( 'VHOST' ) ) {
- $error = true;
+ $subdomain_error = true;
define( 'SUBDOMAIN_INSTALL', 'yes' == VHOST );
} else {
+ $subdomain_error = false;
define( 'SUBDOMAIN_INSTALL', false );
define( 'VHOST', 'no' );
}
diff --git a/tests/phpunit/tests/ms.php b/tests/phpunit/tests/ms.php
index 185133d1e6..647f5eea49 100644
--- a/tests/phpunit/tests/ms.php
+++ b/tests/phpunit/tests/ms.php
@@ -25,6 +25,17 @@ class Tests_MS extends WP_UnitTestCase {
$wpdb->suppress_errors( $this->suppress );
}
+ /**
+ * @ticket 28697
+ */
+ function test_ms_subdomain_constants() {
+ global $subdomain_error;
+
+ $this->assertFalse( $subdomain_error );
+ ms_subdomain_constants();
+ $this->assertFalse( $subdomain_error );
+ }
+
function test_remove_user_from_blog() {
$user1 = $this->factory->user->create_and_get();
$user2 = $this->factory->user->create_and_get();