函数文档

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.