populate_roles()
云策文档标注
概述
populate_roles() 函数用于执行 WordPress 不同版本的角色创建和更新。它通过调用一系列特定版本的角色填充函数,并管理数据库写入过程,确保角色数据正确初始化。
关键要点
- 函数主要功能是创建和更新 WordPress 角色,覆盖从版本 2.0 到 3.0 的多个版本。
- 在填充角色时,会临时禁用数据库更新(通过设置 $wp_roles->use_db = false),以防止中间状态写入。
- 填充完成后,如果原始设置允许数据库写入,则通过 update_option() 保存更新后的角色数据到数据库。
- 函数被用于站点初始化(如 wp_initialize_site() 和 wp_install())等场景,确保新站点或安装时的角色配置正确。
代码示例
function populate_roles() {
$wp_roles = wp_roles();
// Disable role updates to the database while populating roles.
$original_use_db = $wp_roles->use_db;
$wp_roles->use_db = false;
// Populate roles
populate_roles_160();
populate_roles_210();
populate_roles_230();
populate_roles_250();
populate_roles_260();
populate_roles_270();
populate_roles_280();
populate_roles_300();
// Save the updated roles to the database.
if ( $original_use_db ) {
update_option( $wp_roles->role_key, $wp_roles->roles, true );
}
// Restore original value for writing to database.
$wp_roles->use_db = $original_use_db;
}注意事项
- 此函数自 WordPress 2.0.0 版本引入,是核心角色系统的一部分,通常由安装或升级过程自动调用,开发者一般无需直接使用。
- 调用 populate_roles() 时,需确保相关版本的角色填充函数(如 populate_roles_160() 等)已定义,这些函数位于 wp-admin/includes/schema.php 文件中。
- 函数内部处理了数据库写入的开关,避免在角色填充过程中产生不必要的数据库操作,提高效率和数据一致性。
原文内容
Execute WordPress role creation for the various WordPress versions.
Source
function populate_roles() {
$wp_roles = wp_roles();
// Disable role updates to the database while populating roles.
$original_use_db = $wp_roles->use_db;
$wp_roles->use_db = false;
// Populate roles
populate_roles_160();
populate_roles_210();
populate_roles_230();
populate_roles_250();
populate_roles_260();
populate_roles_270();
populate_roles_280();
populate_roles_300();
// Save the updated roles to the database.
if ( $original_use_db ) {
update_option( $wp_roles->role_key, $wp_roles->roles, true );
}
// Restore original value for writing to database.
$wp_roles->use_db = $original_use_db;
}
Changelog
| Version | Description |
|---|---|
| 2.0.0 | Introduced. |