get_main_network_id()
云策文档标注
概述
get_main_network_id() 函数用于获取 WordPress 多站点网络中的主网络 ID。它根据是否启用多站点、常量定义或当前网络状态返回相应的整数 ID。
关键要点
- 函数返回主网络的整数 ID,用于多站点环境中的网络标识。
- 如果未启用多站点(is_multisite() 返回 false),则默认返回 1。
- 支持通过 PRIMARY_NETWORK_ID 常量自定义主网络 ID。
- 包含 get_main_network_id 过滤器钩子,允许开发者修改返回的主网络 ID。
- 函数内部逻辑包括检查当前网络 ID 或查询网络列表来确定主网络。
代码示例
function get_main_network_id() {
if ( ! is_multisite() ) {
return 1;
}
$current_network = get_network();
if ( defined( 'PRIMARY_NETWORK_ID' ) ) {
$main_network_id = PRIMARY_NETWORK_ID;
} elseif ( isset( $current_network->id ) && 1 === (int) $current_network->id ) {
$main_network_id = 1;
} else {
$_networks = get_networks(
array(
'fields' => 'ids',
'number' => 1,
)
);
$main_network_id = array_shift( $_networks );
}
return (int) apply_filters( 'get_main_network_id', $main_network_id );
}注意事项
- 该函数仅在 WordPress 4.3.0 及以上版本可用,引入于多站点功能的增强。
- 在多站点环境中,正确获取主网络 ID 对于网络级操作(如升级或元数据支持)至关重要。
- 开发者可以通过 apply_filters 钩子自定义主网络 ID 的逻辑,以适应特定配置。
原文内容
Gets the main network ID.
Source
function get_main_network_id() {
if ( ! is_multisite() ) {
return 1;
}
$current_network = get_network();
if ( defined( 'PRIMARY_NETWORK_ID' ) ) {
$main_network_id = PRIMARY_NETWORK_ID;
} elseif ( isset( $current_network->id ) && 1 === (int) $current_network->id ) {
// If the current network has an ID of 1, assume it is the main network.
$main_network_id = 1;
} else {
$_networks = get_networks(
array(
'fields' => 'ids',
'number' => 1,
)
);
$main_network_id = array_shift( $_networks );
}
/**
* Filters the main network ID.
*
* @since 4.3.0
*
* @param int $main_network_id The ID of the main network.
*/
return (int) apply_filters( 'get_main_network_id', $main_network_id );
}
Hooks
- apply_filters( ‘get_main_network_id’, int $main_network_id )
-
Filters the main network ID.
Changelog
| Version | Description |
|---|---|
| 4.3.0 | Introduced. |