cache_users()
云策文档标注
概述
cache_users() 是一个 WordPress 函数,用于批量获取用户信息并缓存,以避免 get_userdata() 多次查询数据库。它通过更新用户元数据缓存和用户缓存来提高性能。
关键要点
- 函数接受一个用户 ID 数组作为参数,用于批量处理用户数据。
- 内部调用 update_meta_cache() 更新用户元数据缓存,并使用 _get_non_cached_ids() 获取未缓存的用户 ID。
- 通过 wpdb::get_results() 从数据库查询用户信息,并利用 update_user_caches() 更新用户缓存。
- 此函数自 WordPress 3.0.0 版本引入,常用于优化用户查询性能。
代码示例
function cache_users( $user_ids ) {
global $wpdb;
update_meta_cache( 'user', $user_ids );
$clean = _get_non_cached_ids( $user_ids, 'users' );
if ( empty( $clean ) ) {
return;
}
$list = implode( ',', $clean );
$users = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($list)" );
foreach ( $users as $user ) {
update_user_caches( $user );
}
}注意事项
- 参数 $user_ids 必须是整数数组,否则可能导致错误。
- 函数主要用于内部优化,开发者通常不直接调用,而是通过相关函数如 update_post_author_caches() 或 WP_User_Query 间接使用。
- 确保在需要批量处理用户数据时使用,以避免重复查询提升效率。
原文内容
Retrieves info for user lists to prevent multiple queries by get_userdata() .
Parameters
$user_idsint[]required-
User ID numbers list
Source
function cache_users( $user_ids ) {
global $wpdb;
update_meta_cache( 'user', $user_ids );
$clean = _get_non_cached_ids( $user_ids, 'users' );
if ( empty( $clean ) ) {
return;
}
$list = implode( ',', $clean );
$users = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($list)" );
foreach ( $users as $user ) {
update_user_caches( $user );
}
}
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Introduced. |