bp_has_notifications( array|string $args = '' )
Initialize the notifications loop.
Description
Based on the $args passed, bp_has_notifications() populates buddypress()->notifications->query_loop global, enabling the use of BP templates and template functions to display a list of notifications.
Parameters
- $args
-
(Optional) Arguments for limiting the contents of the notifications loop. Can be passed as an associative array, or as a URL query string. See BP_Notifications_Notification::get() for detailed information on the arguments. In addition, also supports:
- 'max'
(int) Optional. Max items to display. Default: false. - 'page_arg'
(string) URL argument to use for pagination. Default: 'npage'.
Default value: ''
- 'max'
Return
(bool)
Source
File: bp-notifications/bp-notifications-template.php
function bp_has_notifications( $args = '' ) {
// Get the default is_new argument.
if ( bp_is_current_action( 'unread' ) ) {
$is_new = 1;
} elseif ( bp_is_current_action( 'read' ) ) {
$is_new = 0;
// Not on a notifications page? default to fetch new notifications.
} else {
$is_new = 1;
}
// Get the user ID.
if ( bp_displayed_user_id() ) {
$user_id = bp_displayed_user_id();
} else {
$user_id = bp_loggedin_user_id();
}
// Set the component action (by default false to get all actions)
$component_action = false;
if ( isset( $_REQUEST['type'] ) ) {
$component_action = sanitize_key( $_REQUEST['type'] );
}
// Set the search terms (by default an empty string to get all notifications)
$search_terms = '';
if ( isset( $_REQUEST['s'] ) ) {
$search_terms = stripslashes( $_REQUEST['s'] );
}
// Parse the args.
$r = bp_parse_args( $args, array(
'id' => false,
'user_id' => $user_id,
'secondary_item_id' => false,
'component_name' => bp_notifications_get_registered_components(),
'component_action' => $component_action,
'is_new' => $is_new,
'search_terms' => $search_terms,
'order_by' => 'date_notified',
'sort_order' => 'DESC',
'meta_query' => false,
'date_query' => false,
'page' => 1,
'per_page' => 25,
// These are additional arguments that are not available in
// BP_Notifications_Notification::get().
'max' => false,
'page_arg' => 'npage',
), 'has_notifications' );
// Get the notifications.
$query_loop = new BP_Notifications_Template( $r );
// Setup the global query loop.
buddypress()->notifications->query_loop = $query_loop;
/**
* Filters whether or not the user has notifications to display.
*
* @since BuddyPress 1.9.0
* @since BuddyPress 2.6.0 Added the `$r` parameter.
*
* @param bool $value Whether or not there are notifications to display.
* @param BP_Notifications_Template $query_loop BP_Notifications_Template object instance.
* @param array $r Array of arguments passed into the BP_Notifications_Template class.
*/
return apply_filters( 'bp_has_notifications', $query_loop->has_notifications(), $query_loop, $r );
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.9.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.