BP_Friends_Friendship::search_users( string $filter, int $user_id, int|null $limit = null, int|null $page = null )
Search users.
Description
Parameters
- $filter
-
(Required) String to search by.
- $user_id
-
(Required) A user ID param that is unused.
- $limit
-
(Optional) Max number of records to return.
Default value: null
- $page
-
(Optional) Number of the page to return. Default: false (no pagination - return all results).
Default value: null
Return
(array) $filtered_ids IDs of users who match the query.
Source
File: bp-friends/classes/class-bp-friends-friendship.php
public static function search_users( $filter, $user_id, $limit = null, $page = null ) { global $wpdb; // Only search for matching strings at the beginning of the // name (@todo - figure out why this restriction). $search_terms_like = bp_esc_like( $filter ) . '%'; $usermeta_table = $wpdb->base_prefix . 'usermeta'; $users_table = $wpdb->base_prefix . 'users'; $pag_sql = ''; if ( !empty( $limit ) && !empty( $page ) ) $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * intval( $limit ) ), intval( $limit ) ); $bp = buddypress(); // Filter the user_ids based on the search criteria. if ( bp_is_active( 'xprofile' ) ) { $sql = $wpdb->prepare( "SELECT DISTINCT d.user_id as id FROM {$bp->profile->table_name_data} d, {$users_table} u WHERE d.user_id = u.id AND d.value LIKE %s ORDER BY d.value DESC {$pag_sql}", $search_terms_like ); } else { $sql = $wpdb->prepare( "SELECT DISTINCT user_id as id FROM {$usermeta_table} WHERE meta_value LIKE %s ORDER BY d.value DESC {$pag_sql}", $search_terms_like ); } $filtered_fids = $wpdb->get_col($sql); if ( empty( $filtered_fids ) ) return false; return $filtered_fids; }
Changelog
Version | Description |
---|---|
BuddyPress 1.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.