The cache_users() WordPress PHP function retrieves information for user lists, eliminating the need for multiple queries by get_userdata(). It essentially helps in caching user data, enhancing the efficiency of your WordPress site.
Usage
Here’s a simple example of how to use the cache_users() function:
$user_ids = array(1, 2, 3, 4, 5); cache_users($user_ids);
In this example, an array of user IDs is created and then passed to the cache_users() function. This will cache the data of users with these IDs.
Parameters
- $user_ids (int array) – This required parameter is a list of User ID numbers.
More information
See WordPress Developer Resources: cache_users()
Examples
Caching User Data
In this example, we’re caching data for users 1, 2, and 3.
$user_ids = array(1, 2, 3); cache_users($user_ids);
Using with get_userdata()
You can use cache_users() before get_userdata() to prevent multiple queries.
$user_ids = array(1, 2, 3); cache_users($user_ids); foreach($user_ids as $id) { $user = get_userdata($id); echo 'User email: ' . $user->user_email; }
In the above example, user data is cached before looping through the user IDs and fetching user data with get_userdata().
Caching Data for a Large Number of Users
If you have a large number of users, you can cache their data in chunks to avoid overloading your server.
$user_ids = range(1, 1000); $user_ids_chunks = array_chunk($user_ids, 200); foreach($user_ids_chunks as $chunk) { cache_users($chunk); // process users here... }
In this example, user IDs from 1 to 1000 are divided into chunks of 200, and each chunk is then cached.
Caching User Data from a Query
You can cache user data directly from a query.
$args = array( 'role' => 'subscriber', 'fields' => 'ids', ); $subscribers = get_users($args); cache_users($subscribers);
In this example, we’re getting all subscriber IDs using get_users() and then caching their data.
Caching User Data for Logged-In Users
You can use cache_users() to cache data for all logged-in users.
$logged_in_users = get_users(array( 'fields' => 'ids', 'number' => 0, 'who' => 'online', )); cache_users($logged_in_users);
In the above example, we’re fetching IDs of all logged-in users and then caching their data.