bp_has_message_threads( array|string $args = array() )

Retrieve private message threads for display in inbox/sentbox/notices.


Similar to WordPress’s have_posts() function, this function is responsible for querying the database and retrieving private messages for display inside the theme via individual template parts for a member’s inbox/sentbox/notices.



(array|string) (Optional) Array of arguments. All are optional.

  • 'user_id'
    (int) ID of the user whose threads are being loaded. Default: ID of the logged-in user.
  • 'box'
    (string) Current "box" view. If not provided here, the current view will be inferred from the URL.
  • 'per_page'
    (int) Number of results to return per page. Default: 10.
  • 'max'
    (int) Max results to return. Default: false.
  • 'type'
    (string) Type of messages to return. Values: 'all', 'read', 'unread' Default: 'all'
  • 'search_terms'
    (string) Terms to which to limit results. Default: the value of $_REQUEST['s'].
  • 'page_arg'
    (string) URL argument used for the pagination param. Default: 'mpage'.
  • 'meta_query'
    (array) Meta query arguments. Only applicable if $box is not 'notices'. See WP_Meta_Query more details.

Default value: array()


(bool) True if there are threads to display, otherwise false.


File: bp-messages/bp-messages-template.php

function bp_has_message_threads( $args = array() ) {
	global $messages_template;

	// The default box the user is looking at.
	$current_action = bp_current_action();
	switch ( $current_action ) {
		case 'notices' :
		case 'inbox'   :
			$default_box = $current_action;
		default :
			$default_box = 'inbox';

	// User ID
	// @todo displayed user for moderators that get this far?
	$user_id = bp_displayed_user_id()?:bp_loggedin_user_id();

	// Search Terms.
	$search_terms = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : '';

	// Parse the arguments.
	$r = bp_parse_args( $args, array(
		'user_id'      => $user_id,
		'box'          => $default_box,
		'per_page'     => 10,
		'max'          => false,
		'type'         => 'all',
		'search_terms' => $search_terms,
		'include'      => false,
		'page_arg'     => 'mpage', // See https://buddypress.trac.wordpress.org/ticket/3679.
		'meta_query'   => array()
	), 'has_message_threads' );

	// Load the messages loop global up with messages.
	$messages_template = new BP_Messages_Box_Template( $r );

	 * Filters if there are any message threads to display in inbox/sentbox/notices.
	 * @since BuddyPress 1.1.0
	 * @param bool                     $value             Whether or not the message has threads.
	 * @param BP_Messages_Box_Template $messages_template Current message box template object.
	 * @param array                    $r                 Array of parsed arguments passed into function.
	return apply_filters( 'bp_has_message_threads', $messages_template->has_threads(), $messages_template, $r );


Version Description
BuddyPress 1.0.0 Introduced.


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.