bp_groups_prefetch_activity_object_data( array $activities )
Fetch data related to groups at the beginning of an activity loop.
Description
This reduces database overhead during the activity loop.
Parameters
- $activities
-
(Required) Array of activity items.
Return
(array)
Source
File: bp-groups/bp-groups-activity.php
function bp_groups_prefetch_activity_object_data( $activities ) { $group_ids = array(); if ( empty( $activities ) ) { return $activities; } foreach ( $activities as $activity ) { if ( buddypress()->groups->id !== $activity->component ) { continue; } $group_ids[] = $activity->item_id; } if ( ! empty( $group_ids ) ) { // TEMPORARY - Once the 'populate_extras' issue is solved // in the groups component, we can do this with groups_get_groups() // rather than manually. $uncached_ids = array(); foreach ( $group_ids as $group_id ) { if ( false === wp_cache_get( $group_id, 'bp_groups' ) ) { $uncached_ids[] = $group_id; } } if ( ! empty( $uncached_ids ) ) { global $wpdb; $bp = buddypress(); $uncached_ids_sql = implode( ',', wp_parse_id_list( $uncached_ids ) ); $groups = $wpdb->get_results( "SELECT * FROM {$bp->groups->table_name} WHERE id IN ({$uncached_ids_sql})" ); foreach ( $groups as $group ) { wp_cache_set( $group->id, $group, 'bp_groups' ); } } } return $activities; }
Changelog
Version | Description |
---|---|
BuddyPress 2.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.