BP_Friends_Friendship:: search_friends (字符串美元的过滤器intuser_id美元int |零美元的限制int |零美元的页面)

通过搜索字符串搜索用户的朋友。

描述

参数

美元的过滤器

字符串)(必需)搜索字符串,匹配xprofile字段(如果可用),或usermeta 'nickname'字段。

user_id美元

int)(必需)正在搜索朋友的用户ID。

美元的限制

int|)(可选)返回的朋友的最大数量。

默认值:空

美元的页面

int|)(可选)返回的结果页。默认值:null(没有分页-返回所有结果)。

默认值:空

返回

(数组| bool)成功时,一个数组:{@type array $friends查询返回的好友id。@type int $count匹配搜索的朋友总数(不考虑分页)。}。失败时返回false。

文件:bp-friends /类/ class-bp-friends-friendship.php

Public static function search_friends($filter, $user_id, $limit = null, $page = null) {global $wpdb;/* * TODO:优化这个函数。*/ if (empty($user_id)) $user_id = bp_loggedin_user_id();//只搜索// name开头的匹配字符串(@todo -找出为什么这个限制)。$search_terms_like = bp_esc_like($filter)。“%”;$ pag_sql =”;$pag_sql = $wpdb->prepare(" limit %d, %d", intval(($page - 1) * $limit), intval($limit));if (!$friend_ids = BP_Friends_Friendship::get_friend_user_ids($user_id))返回false;//获取当前用户朋友的所有用户id。 $fids = implode( ',', wp_parse_id_list( $friend_ids ) ); if ( empty( $fids ) ) return false; $bp = buddypress(); // Filter the user_ids based on the search criteria. if ( bp_is_active( 'xprofile' ) ) { $sql = $wpdb->prepare( "SELECT DISTINCT user_id FROM {$bp->profile->table_name_data} WHERE user_id IN ({$fids}) AND value LIKE %s {$pag_sql}", $search_terms_like ); $total_sql = $wpdb->prepare( "SELECT COUNT(DISTINCT user_id) FROM {$bp->profile->table_name_data} WHERE user_id IN ({$fids}) AND value LIKE %s", $search_terms_like ); } else { $sql = $wpdb->prepare( "SELECT DISTINCT user_id FROM {$wpdb->usermeta} WHERE user_id IN ({$fids}) AND meta_key = 'nickname' AND meta_value LIKE %s {$pag_sql}", $search_terms_like ); $total_sql = $wpdb->prepare( "SELECT COUNT(DISTINCT user_id) FROM {$wpdb->usermeta} WHERE user_id IN ({$fids}) AND meta_key = 'nickname' AND meta_value LIKE %s", $search_terms_like ); } $filtered_friend_ids = $wpdb->get_col( $sql ); $total_friend_ids = $wpdb->get_var( $total_sql ); if ( empty( $filtered_friend_ids ) ) return false; return array( 'friends' => array_map( 'intval', $filtered_friend_ids ), 'total' => (int) $total_friend_ids ); }

更新日志

更新日志
版本 描述
BuddyPress 1.0.0 介绍了。

问题吗?

我们总是很乐意帮助您解决代码或其他问题!搜索我们的开发人员文档联络支持,或与我们联系销售团队