bp_has_groups( array|string $args = '' )
Start the Groups Template Loop.
Description
Parameters
- $args
-
(Optional) Array of parameters. All items are optional.
- 'type'
(string) Shorthand for certain orderby/order combinations. 'newest', 'active', 'popular', 'alphabetical', 'random'. When present, will override orderby and order params. Default: null. - 'order'
(string) Sort order. 'ASC' or 'DESC'. Default: 'DESC'. - 'orderby'
(string) Property to sort by. 'date_created', 'last_activity', 'total_member_count', 'name', 'random'. Default: 'last_activity'. - 'page'
(int) Page offset of results to return. Default: 1 (first page of results). - 'per_page'
(int) Number of items to return per page of results. Default: 20. - 'max'
(int) Does NOT affect query. May change the reported number of total groups found, but not the actual number of found groups. Default: false. - 'show_hidden'
(bool) Whether to include hidden groups in results. Default: false. - 'page_arg'
(string) Query argument used for pagination. Default: 'grpage'. - 'user_id'
(int) If provided, results will be limited to groups of which the specified user is a member. Default: value of bp_displayed_user_id(). - 'slug'
(string) If provided, only the group with the matching slug will be returned. Default: false. - 'search_terms'
(string) If provided, only groups whose names or descriptions match the search terms will be returned. Default: value of$_REQUEST['groups_search']
or$_REQUEST['s']
, if present. Otherwise false. - 'group_type'
(array|string) Array or comma-separated list of group types to limit results to. - 'group_type__in'
(array|string) Array or comma-separated list of group types to limit results to. - 'group_type__not_in'
(array|string) Array or comma-separated list of group types that will be excluded from results. - 'meta_query'
(array) An array of meta_query conditions. See WP_Meta_Query::queries for description. - 'include'
(array|string) Array or comma-separated list of group IDs. Results will be limited to groups within the list. Default: false. - 'exclude'
(array|string) Array or comma-separated list of group IDs. Results will exclude the listed groups. Default: false. - 'parent_id'
(array|string) Array or comma-separated list of group IDs. Results will include only child groups of the listed groups. Default: null. - 'update_meta_cache'
(bool) Whether to fetch groupmeta for queried groups. Default: true. - 'update_admin_cache'
(bool) Whether to pre-fetch group admins for queried groups. Defaults to true when on a group directory, where this information is needed in the loop. Otherwise false.
Default value: ''
- 'type'
Return
(bool) True if there are groups to display that match the params
Source
File: bp-groups/bp-groups-template.php
345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 | function bp_has_groups( $args = '' ) { global $groups_template ; /* * Defaults based on the current page & overridden by parsed $args */ $slug = false; $type = '' ; $search_terms = false; // When looking your own groups, check for two action variables. if ( bp_is_current_action( 'my-groups' ) ) { if ( bp_is_action_variable( 'most-popular' , 0 ) ) { $type = 'popular' ; } elseif ( bp_is_action_variable( 'alphabetically' , 0 ) ) { $type = 'alphabetical' ; } // When looking at invites, set type to invites. } elseif ( bp_is_current_action( 'invites' ) ) { $type = 'invites' ; // When looking at a single group, set the type and slug. } elseif ( bp_get_current_group_slug() ) { $type = 'single-group' ; $slug = bp_get_current_group_slug(); } $group_type = bp_get_current_group_directory_type(); if ( ! $group_type && ! empty ( $_GET [ 'group_type' ] ) ) { if ( is_array ( $_GET [ 'group_type' ] ) ) { $group_type = $_GET [ 'group_type' ]; } else { // Can be a comma-separated list. $group_type = explode ( ',' , $_GET [ 'group_type' ] ); } } // Default search string (too soon to escape here). $search_query_arg = bp_core_get_component_search_query_arg( 'groups' ); if ( ! empty ( $_REQUEST [ $search_query_arg ] ) ) { $search_terms = stripslashes ( $_REQUEST [ $search_query_arg ] ); } elseif ( ! empty ( $_REQUEST [ 'group-filter-box' ] ) ) { $search_terms = $_REQUEST [ 'group-filter-box' ]; } elseif ( ! empty ( $_REQUEST [ 's' ] ) ) { $search_terms = $_REQUEST [ 's' ]; } // Parse defaults and requested arguments. $r = bp_parse_args( $args , array ( 'type' => $type , 'order' => 'DESC' , 'orderby' => 'last_activity' , 'page' => 1, 'per_page' => 20, 'max' => false, 'show_hidden' => false, 'page_arg' => 'grpage' , 'user_id' => bp_displayed_user_id(), 'slug' => $slug , 'search_terms' => $search_terms , 'group_type' => $group_type , 'group_type__in' => '' , 'group_type__not_in' => '' , 'meta_query' => false, 'include' => false, 'exclude' => false, 'parent_id' => null, 'update_meta_cache' => true, 'update_admin_cache' => bp_is_groups_directory() || bp_is_user_groups(), ), 'has_groups' ); $args = array ( 'type' => $r [ 'type' ], 'order' => $r [ 'order' ], 'orderby' => $r [ 'orderby' ], 'page' => (int) $r [ 'page' ], 'per_page' => (int) $r [ 'per_page' ], 'max' => (int) $r [ 'max' ], 'show_hidden' => $r [ 'show_hidden' ], 'page_arg' => $r [ 'page_arg' ], 'user_id' => (int) $r [ 'user_id' ], 'slug' => $r [ 'slug' ], 'search_terms' => $r [ 'search_terms' ], 'group_type' => $r [ 'group_type' ], 'group_type__in' => $r [ 'group_type__in' ], 'group_type__not_in' => $r [ 'group_type__not_in' ], 'meta_query' => $r [ 'meta_query' ], 'include' => $r [ 'include' ], 'exclude' => $r [ 'exclude' ], 'parent_id' => $r [ 'parent_id' ], 'update_meta_cache' => (bool) $r [ 'update_meta_cache' ], 'update_admin_cache' => (bool) $r [ 'update_admin_cache' ], ); if ( isset( $_POST [ 'template' ] ) && 'group_subgroups' === $_POST [ 'template' ] ) { $descendant_groups = bp_get_descendent_groups( bp_get_current_group_id(), bp_loggedin_user_id() ); $ids = wp_list_pluck( $descendant_groups , 'id' ); $args [ 'include' ] = $ids ; $args [ 'slug' ] = '' ; $args [ 'type' ] = '' ; $args [ 'show_hidden' ] = true; } // Setup the Groups template global. $groups_template = new BP_Groups_Template( $args ); /** * Filters whether or not there are groups to iterate over for the groups loop. * * @since BuddyPress 1.1.0 * * @param bool $value Whether or not there are groups to iterate over. * @param BP_Groups_Template $groups_template BP_Groups_Template object based on parsed arguments. * @param array $r Array of parsed arguments for the query. */ return apply_filters( 'bp_has_groups' , $groups_template ->has_groups(), $groups_template , $r ); } |
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.