Skip to:

Activity Loop

The activity loop can be used to output a list of sitewide, member or member’s friends activity.

Standard Loop

<?php if ( bp_has_activities( bp_ajax_querystring( 'activity' ) ) ) : ?>
	<?php while ( bp_activities() ) : bp_the_activity(); ?>

		<?php locate_template( array( 'activity/entry.php' ), true, false ); ?>

	<?php endwhile; ?>
<?php endif; ?>

Accepted Parameters

The bp_has_activities() function will accept a number of parameters that will manipulate the data being returned.

Filtering Options

Using filtering you can use the activity loop to return any specific information that has been recorded on the entire site. For example you could use it to return all of the latest comments site wide.

Listed below are the parameters you can use to filter the activity stream.

Filtering Examples

Filtering the activity loop to show only status updates in the activity stream:

<?php if ( bp_has_activities( 'object=status') ) : ?>

Use ‘user_id’ to filter the activity loop to show only you and your friends in the activity stream:

// best practice is to create a function in another file, but this will work... 
$friends = friends_get_friend_user_ids( bp_loggedin_user_id() );
$friends[] = bp_loggedin_user_id();
$friends_and_me = implode( ',', (array) $friends );
$friends_and_me =  '&user_id=' . $friends_and_me;

<?php if ( bp_has_activities( bp_ajax_querystring( 'activity' ) . $friends_and_me) ) :  ?>

Adding Commenting Support

Adding commenting support to your activity loop is pretty straightforward. You will first need to pass the “display_comments=threaded” parameter to your loop (see above).

Second you need to wrap all your activity code in a div with an “activity” class in order to make the ajax comments to work.

Finally, add the following code inside your loop, below “activity-content” div and above the closing list item tag:

			<div class="activity-meta">

				<?php if ( bp_activity_can_comment() ) : ?>

					<a href="<?php bp_get_activity_comment_link(); ?>" class="button acomment-reply bp-primary-action" id="acomment-comment-<?php bp_activity_id(); ?>"><?php printf( __( 'Comment <span>%s</span>', 'buddypress' ), bp_activity_get_comment_count() ); ?></a>

				<?php endif; ?>

				<?php if ( bp_activity_can_favorite() ) : ?>

					<?php if ( !bp_get_activity_is_favorite() ) : ?>

						<a href="<?php bp_activity_favorite_link(); ?>" class="button fav bp-secondary-action" title="<?php esc_attr_e( 'Mark as Favorite', 'buddypress' ); ?>"><?php _e( 'Favorite', 'buddypress' ) ?></a>

					<?php else : ?>

						<a href="<?php bp_activity_unfavorite_link(); ?>" class="button unfav bp-secondary-action" title="<?php esc_attr_e( 'Remove Favorite', 'buddypress' ); ?>"><?php _e( 'Remove Favorite', 'buddypress' ) ?></a>

					<?php endif; ?>

				<?php endif; ?>

				<?php if ( bp_activity_user_can_delete() ) bp_activity_delete_link(); ?>

				<?php do_action( 'bp_activity_entry_meta' ); ?>


		<?php endif; ?>


	<?php do_action( 'bp_before_activity_entry_comments' ); ?>

	<?php if ( ( is_user_logged_in() && bp_activity_can_comment() ) || bp_activity_get_comment_count() ) : ?>

		<div class="activity-comments">

			<?php bp_activity_comments(); ?>

			<?php if ( is_user_logged_in() ) : ?>

				<form action="<?php bp_activity_comment_form_action(); ?>" method="post" id="ac-form-<?php bp_activity_id(); ?>" class="ac-form"<?php bp_activity_comment_form_nojs_display(); ?>>
					<div class="ac-reply-avatar"><?php bp_loggedin_user_avatar( 'width=' . BP_AVATAR_THUMB_WIDTH . '&height=' . BP_AVATAR_THUMB_HEIGHT ); ?></div>
					<div class="ac-reply-content">
						<div class="ac-textarea">
							<textarea id="ac-input-<?php bp_activity_id(); ?>" class="ac-input" name="ac_input_<?php bp_activity_id(); ?>"></textarea>
						<input type="submit" name="ac_form_submit" value="<?php _e( 'Post', 'buddypress' ); ?>" /> &nbsp; <?php _e( 'or press esc to cancel.', 'buddypress' ); ?>
						<input type="hidden" name="comment_form_id" value="<?php bp_activity_id(); ?>" />

					<?php do_action( 'bp_activity_entry_comments' ); ?>

					<?php wp_nonce_field( 'new_activity_comment', '_wpnonce_new_activity_comment' ); ?>


			<?php endif; ?>