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
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.