| | 196 | |
| | 197 | /** |
| | 198 | * Retrieve IDs of objects in valid taxonomies and terms for BuddyPress-related taxonomies. |
| | 199 | * |
| | 200 | * @since 2.7.0 |
| | 201 | * |
| | 202 | * @see get_objects_in_term() for a full description of function and parameters. |
| | 203 | * |
| | 204 | * @param int|array $term_ids Term id or array of term ids of terms that will be used. |
| | 205 | * @param string|array $taxonomies String of taxonomy name or Array of string values of taxonomy names. |
| | 206 | * @param array|string $args Change the order of the object_ids, either ASC or DESC. |
| | 207 | * |
| | 208 | * @return WP_Error|array If the taxonomy does not exist, then WP_Error will be returned. On success, |
| | 209 | * the array can be empty meaning that there are no $object_ids found or it |
| | 210 | * will return the $object_ids found. |
| | 211 | */ |
| | 212 | function bp_get_objects_in_term( $term_ids, $taxonomies, $args = array() ) { |
| | 213 | // Different taxonomies may be stored on different sites. |
| | 214 | $taxonomy_site_map = array(); |
| | 215 | foreach ( (array) $taxonomies as $taxonomy ) { |
| | 216 | $taxonomy_site_id = bp_get_taxonomy_term_site_id( $taxonomy ); |
| | 217 | $taxonomy_site_map[ $taxonomy_site_id ][] = $taxonomy; |
| | 218 | } |
| | 219 | |
| | 220 | $retval = array(); |
| | 221 | foreach ( $taxonomy_site_map as $taxonomy_site_id => $site_taxonomies ) { |
| | 222 | $switched = false; |
| | 223 | if ( $taxonomy_site_id !== get_current_blog_id() ) { |
| | 224 | switch_to_blog( $taxonomy_site_id ); |
| | 225 | bp_register_taxonomies(); |
| | 226 | $switched = true; |
| | 227 | } |
| | 228 | |
| | 229 | $site_objects = get_objects_in_term( $term_ids, $taxonomies, $args ); |
| | 230 | $retval = array_merge( $retval, $site_objects ); |
| | 231 | |
| | 232 | if ( $switched ) { |
| | 233 | restore_current_blog(); |
| | 234 | } |
| | 235 | } |
| | 236 | |
| | 237 | return $retval; |
| | 238 | } |
| | 239 | |
| | 240 | /** |
| | 241 | * Get term data for terms in BuddyPress taxonomies. |
| | 242 | * |
| | 243 | * @since 2.7.0 |
| | 244 | * |
| | 245 | * @see get_term_by() for a full description of function and parameters. |
| | 246 | * |
| | 247 | * @param string $field Either 'slug', 'name', 'id' (term_id), or 'term_taxonomy_id' |
| | 248 | * @param string|int $value Search for this term value |
| | 249 | * @param string $taxonomy Taxonomy name. Optional, if `$field` is 'term_taxonomy_id'. |
| | 250 | * @param string $output Constant OBJECT, ARRAY_A, or ARRAY_N |
| | 251 | * @param string $filter Optional, default is raw or no WordPress defined filter will applied. |
| | 252 | * |
| | 253 | * @return WP_Term|bool WP_Term instance on success. Will return false if `$taxonomy` does not exist |
| | 254 | * or `$term` was not found. |
| | 255 | */ |
| | 256 | function bp_get_term_by( $field, $value, $taxonomy = '', $output = OBJECT, $filter = 'raw' ) { |
| | 257 | $site_id = bp_get_taxonomy_term_site_id( $taxonomy ); |
| | 258 | |
| | 259 | $switched = false; |
| | 260 | if ( $site_id !== get_current_blog_id() ) { |
| | 261 | switch_to_blog( $site_id ); |
| | 262 | bp_register_taxonomies(); |
| | 263 | $switched = true; |
| | 264 | } |
| | 265 | |
| | 266 | $term = get_term_by( $field, $value, $taxonomy, $output, $filter ); |
| | 267 | |
| | 268 | if ( $switched ) { |
| | 269 | restore_current_blog(); |
| | 270 | } |
| | 271 | |
| | 272 | return $term; |
| | 273 | } |
| | 274 | No newline at end of file |