ms_subdomain_constants()
云策文档标注
概述
ms_subdomain_constants() 函数用于定义 WordPress 多站点子域名相关常量,并处理常量冲突时的警告和弃用通知。它主要检查 SUBDOMAIN_INSTALL 和 VHOST 常量的定义状态,确保配置一致性。
关键要点
- 函数定义多站点子域名常量 SUBDOMAIN_INSTALL 和 VHOST,其中 VHOST 已弃用,推荐使用布尔型 SUBDOMAIN_INSTALL。
- 首次调用时检查并定义常量,第二次调用时加载翻译并触发警告。
- 处理常量冲突:如果 SUBDOMAIN_INSTALL 和 VHOST 同时定义且值不一致,会触发用户警告;否则根据定义情况设置常量。
代码示例
function ms_subdomain_constants() {
static $subdomain_error = null;
static $subdomain_error_warn = null;
if ( false === $subdomain_error ) {
return;
}
if ( $subdomain_error ) {
$vhost_deprecated = sprintf(
/* translators: 1: VHOST, 2: SUBDOMAIN_INSTALL, 3: wp-config.php, 4: is_subdomain_install() */
__( 'The constant %1$s is deprecated. Use the boolean constant %2$s in %3$s to enable a subdomain configuration. Use %4$s to check whether a subdomain configuration is enabled.' ),
'VHOST',
'SUBDOMAIN_INSTALL',
'wp-config.php',
'is_subdomain_install()'
);
if ( $subdomain_error_warn ) {
wp_trigger_error(
__FUNCTION__,
sprintf(
/* translators: 1: VHOST, 2: SUBDOMAIN_INSTALL */
__( 'Conflicting values for the constants %1$s and %2$s. The value of %2$s will be assumed to be your subdomain configuration setting.' ),
'VHOST',
'SUBDOMAIN_INSTALL'
) . ' ' . $vhost_deprecated,
E_USER_WARNING
);
} else {
_deprecated_argument( 'define()', '3.0.0', $vhost_deprecated );
}
return;
}
if ( defined( 'SUBDOMAIN_INSTALL' ) && defined( 'VHOST' ) ) {
$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' ) ) {
$subdomain_error = true;
define( 'SUBDOMAIN_INSTALL', 'yes' === VHOST );
} else {
$subdomain_error = false;
define( 'SUBDOMAIN_INSTALL', false );
define( 'VHOST', 'no' );
}
}注意事项
- VHOST 常量已弃用,开发者应使用 SUBDOMAIN_INSTALL 布尔常量来配置子域名安装。
- 函数使用静态变量确保警告只在首次冲突时触发,避免重复通知。
- 常量定义逻辑优先考虑 SUBDOMAIN_INSTALL,若未定义则基于 VHOST 或默认值设置。
原文内容
Defines Multisite subdomain constants and handles warnings and notices.
Description
VHOST is deprecated in favor of SUBDOMAIN_INSTALL, which is a bool.
On first call, the constants are checked and defined. On second call, we will have translations loaded and can trigger warnings easily.
Source
function ms_subdomain_constants() {
static $subdomain_error = null;
static $subdomain_error_warn = null;
if ( false === $subdomain_error ) {
return;
}
if ( $subdomain_error ) {
$vhost_deprecated = sprintf(
/* translators: 1: VHOST, 2: SUBDOMAIN_INSTALL, 3: wp-config.php, 4: is_subdomain_install() */
__( 'The constant %1$s <strong>is deprecated</strong>. Use the boolean constant %2$s in %3$s to enable a subdomain configuration. Use %4$s to check whether a subdomain configuration is enabled.' ),
'<code>VHOST</code>',
'<code>SUBDOMAIN_INSTALL</code>',
'<code>wp-config.php</code>',
'<code>is_subdomain_install()</code>'
);
if ( $subdomain_error_warn ) {
wp_trigger_error(
__FUNCTION__,
sprintf(
/* translators: 1: VHOST, 2: SUBDOMAIN_INSTALL */
__( '<strong>Conflicting values for the constants %1$s and %2$s.</strong> The value of %2$s will be assumed to be your subdomain configuration setting.' ),
'<code>VHOST</code>',
'<code>SUBDOMAIN_INSTALL</code>'
) . ' ' . $vhost_deprecated,
E_USER_WARNING
);
} else {
_deprecated_argument( 'define()', '3.0.0', $vhost_deprecated );
}
return;
}
if ( defined( 'SUBDOMAIN_INSTALL' ) && defined( 'VHOST' ) ) {
$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' ) ) {
$subdomain_error = true;
define( 'SUBDOMAIN_INSTALL', 'yes' === VHOST );
} else {
$subdomain_error = false;
define( 'SUBDOMAIN_INSTALL', false );
define( 'VHOST', 'no' );
}
}
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Introduced. |