函数文档

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.