14 min read
The Complete List of BuddyPress Shortcodes You Can Use on Any Page (Updated 2026)
BuddyPress comes with a set of built-in shortcodes that let you drop community components onto any WordPress page, post, or widget area. No custom code required. You use the shortcode tag, add your parameters, and BuddyPress renders the component right there.
This reference covers every core BuddyPress shortcode, the parameters each one accepts, and a real example of the HTML output you can expect. We also cover shortcodes added by popular BuddyPress plugins and what the BuddyX theme unlocks on top of the defaults. If you are looking to understand the full BuddyPress plugin landscape beyond shortcodes, see the BuddyPress Plugins Hub ecosystem guide.
How BuddyPress Shortcodes Work
BuddyPress registers its shortcodes on init using WordPress’s add_shortcode(). When a page contains a shortcode tag, WordPress passes it to the BuddyPress handler, which runs the template stack and returns rendered HTML.
A few things to know before you start:
- BuddyPress must be active - the shortcodes only fire when BuddyPress is installed and the relevant component is enabled.
- Pages vs. posts - shortcodes work in both, but BuddyPress uses page templates for its default community pages. Putting a shortcode on a standard page gives you the same output without the dedicated BuddyPress page URL structure.
- Component dependency -
[bp-member-list]needs the Members component active,[bp-group-list]needs the Groups component, and so on. - Theme compatibility - shortcode output inherits your active theme’s styles. A theme built for BuddyPress (like BuddyX or Reign) gives you the best visual result with no extra CSS.
Core BuddyPress Shortcodes
Below is every shortcode that ships with BuddyPress core. Tested against BuddyPress 12.x and 14.x.
1. Activity Feed: [bp-activity]
Renders a live activity stream. This is the sitewide feed by default, showing all public activity from all users.
| Parameter | Default | Description |
|---|---|---|
type | activity_update | Activity type filter. Options: activity_update, new_member, joined_group, friendship_created, new_blog_post |
action | empty | Filter by action string |
user_id | empty | Show activity for a specific user only |
group_id | empty | Show activity for a specific group only |
object | empty | Filter by component: groups, blogs, friends |
per_page | 20 | Items per page |
max | empty | Maximum items total |
display_comments | threaded | Show comments: threaded, stream, or false |
include | empty | Comma-separated activity IDs to include |
exclude | empty | Comma-separated activity IDs to exclude |
Example usage:
[bp-activity per_page="10" display_comments="threaded"]
What it renders: A paginated list of activity items with avatars, timestamps, and a “Load More” button. Each item shows the user’s avatar, display name, the activity text, and a comment thread if display_comments is enabled.
<div id="buddypress">
<div id="activity" class="activity">
<ul id="activity-stream" class="activity-list item-list">
<li class="activity-item">
<div class="activity-avatar"><a href="/members/jane/"><img src="/avatars/jane-50.jpg" /></a></div>
<div class="activity-content">
<div class="activity-header"><p><a href="/members/jane/">Jane</a> posted an update</p></div>
<div class="activity-inner"><p>Hello community!</p></div>
</div>
</li>
</ul>
</div>
</div>
2. Member List: [bp-member-list]
Outputs a browsable, filterable directory of all community members.
| Parameter | Default | Description |
|---|---|---|
type | active | Sort order: active, newest, alphabetical, random, popular, online |
per_page | 20 | Members per page |
max | empty | Cap total results |
include | empty | Show only these user IDs (comma-separated) |
exclude | empty | Hide these user IDs (comma-separated) |
user_id | empty | Show friends of this user ID |
group_id | empty | Show members of this group ID |
search_terms | empty | Pre-filter by search term |
Example usage:
[bp-member-list type="newest" per_page="12" max="24"]
What it renders: A grid or list of member cards (depending on the theme’s layout). Each card shows the avatar, display name, last active time, and a “View” profile button.
<div id="buddypress">
<div id="members" class="members">
<ul id="members-list" class="item-list">
<li class="vcard">
<div class="item-avatar"><a href="/members/john/"><img class="avatar" src="/avatars/john-50.jpg" /></a></div>
<div class="item">
<div class="item-title"><a href="/members/john/">John Smith</a></div>
<div class="item-meta"><span class="activity">Active 2 hours ago</span></div>
</div>
</li>
</ul>
</div>
</div>
3. Group List: [bp-group-list]
Displays a browsable list of all public groups.
| Parameter | Default | Description |
|---|---|---|
type | active | Sort order: active, newest, alphabetical, random, popular |
per_page | 20 | Groups per page |
max | empty | Cap total results |
include | empty | Show only these group IDs (comma-separated) |
exclude | empty | Hide these group IDs (comma-separated) |
user_id | empty | Show groups this user belongs to |
search_terms | empty | Pre-filter by search term |
show_hidden | false | Include hidden groups (requires mod/admin) |
parent_id | empty | Show sub-groups of this parent group ID |
Example usage:
[bp-group-list type="newest" per_page="8"]
What it renders: A list of group cards with the group cover image, name, member count, and a Join button for non-members.
<div id="buddypress">
<div id="groups" class="groups">
<ul id="groups-list" class="item-list">
<li>
<div class="item-avatar"><a href="/groups/photography/"><img class="avatar" src="/group-avatars/photography-50.jpg" /></a></div>
<div class="item">
<div class="item-title"><a href="/groups/photography/">Photography Lovers</a></div>
<div class="item-meta"><span class="count">42 members</span></div>
</div>
</li>
</ul>
</div>
</div>
4. Login Form: [bp-login-widget]
Renders a login form for logged-out users, or a short account summary for logged-in users.
| Parameter | Default | Description |
|---|---|---|
| none | n/a | This shortcode takes no parameters. Output adapts based on login state. |
Example usage:
[bp-login-widget]
What it renders (logged out):
<div class="widget_bp_core_login_widget">
<form method="post" action="/wp-login.php" class="standard-form">
<label for="user_login">Username</label>
<input type="text" name="log" id="user_login" />
<label for="user_pass">Password</label>
<input type="password" name="pwd" id="user_pass" />
<input type="submit" value="Log In" />
</form>
</div>
5. User Profile: [bp-member-profile]
Renders a user’s xProfile fields on any page. Useful when you want to embed profile data outside the standard /members/ URL structure.
| Parameter | Default | Description |
|---|---|---|
user_id | current user | User ID whose profile to display |
profile_group_id | all groups | Show only this xProfile field group ID |
hide_empty_fields | true | Skip fields the user has not filled in |
Example usage:
[bp-member-profile user_id="42" hide_empty_fields="false"]
6. Profile Field: [field name="..."] (xProfile Data)
BuddyPress registers a dynamic shortcode for each xProfile field. The shortcode tag is the field’s internal name, wrapped in square brackets. You can use these to pull a single field value for the current user or a specific user.
Example: If you have an xProfile field called “Job Title”, its shortcode is:
[field name="Job Title" user_id="42"]
| Parameter | Default | Description |
|---|---|---|
name | required | The exact name of the xProfile field |
user_id | current user | User ID to pull the field value from |
before | empty | HTML to output before the field value |
after | empty | HTML to output after the field value |
before_tag | div | Wrapper HTML tag |
after_tag | div | Closing wrapper tag |
7. Registration Form: [bp-register]
Renders the BuddyPress registration form. Includes account fields, profile fields, and avatar upload if enabled in settings.
| Parameter | Default | Description |
|---|---|---|
| none | n/a | No parameters. Output is controlled by BuddyPress registration settings. |
Example usage:
[bp-register]
What it renders: The full registration form including account details (username, email, password) plus any xProfile fields marked as required during registration.
<div id="buddypress">
<div id="template-notices" role="alert" aria-atomic="true"></div>
<div class="page">
<form action="" name="signup_form" id="signup_form" class="standard-form" method="post">
<div id="account-details-section" class="register-section">
<h2>Account Details</h2>
<label for="field_1">Name <span class="required">(required)</span></label>
<input type="text" name="field_1" id="field_1" />
</div>
</form>
</div>
</div>
8. Activation Form: [bp-activate]
Renders the account activation form. Used on custom activation pages when you are not using BuddyPress’s default activate page.
| Parameter | Default | Description |
|---|---|---|
| none | n/a | No parameters. Activation key comes from the URL query string. |
Example usage:
[bp-activate]
Shortcode Quick Reference Table
Here is every core BuddyPress shortcode in one table for easy scanning:
| Shortcode | Component Required | What It Renders | Key Parameters |
|---|---|---|---|
[bp-activity] | Activity | Sitewide or filtered activity stream | type, per_page, user_id, group_id, display_comments |
[bp-member-list] | Members | Browsable member directory | type, per_page, include, exclude, user_id |
[bp-group-list] | Groups | Browsable group directory | type, per_page, include, exclude, parent_id |
[bp-login-widget] | Core | Login form or logged-in user summary | None |
[bp-member-profile] | xProfile | User’s profile fields | user_id, profile_group_id, hide_empty_fields |
[field name="..."] | xProfile | Single xProfile field value | name, user_id, before, after |
[bp-register] | Core | Full registration form | None |
[bp-activate] | Core | Account activation form | None |
BuddyPress Shortcodes Added by Popular Plugins
BuddyPress’s core set is intentionally lean. Most shortcode power comes from plugins. Here are the ones used most often in production BuddyPress sites.
BuddyPress Shortcodes Plugin (by Wbcom Designs)
The BuddyPress Shortcodes plugin extends the core set with over 20 additional tags, covering components core does not touch. It also includes Elementor widget support, so you can embed any BuddyPress component in a drag-and-drop page builder layout.
| Shortcode | What It Renders | Key Parameters |
|---|---|---|
[bp_recent_activity] | Recent activity stream, styled widget format | count, user_id |
[bp_member_count] | Total registered member count as plain text or inside a wrapper | before, after |
[bp_group_count] | Total group count | before, after |
[bp_friends_list] | Friend list for a specific user | user_id, per_page |
[bp_group_members] | Member list scoped to one group | group_id, per_page |
[bp_recent_members] | Newest registered members | count, avatar_size |
[bp_online_members] | Members currently online (last 15 min) | count, avatar_size |
[bp_loggedin_user_profile] | Profile of the currently logged-in user | profile_group_id |
[bp_profile_completion] | Profile completion progress bar | user_id, show_percent |
[bp_activity_post_form] | Activity post form for logged-in users | placeholder |
[bp_group_activity] | Activity stream scoped to one group | group_id, per_page |
[bp_member_messages] | Private message thread list for logged-in user | per_page |
[bp_notifications] | Notification list for logged-in user | per_page, max |
[bp_user_avatar] | Single user avatar image | user_id, size, type |
[bp_cover_photo] | User’s cover photo as a full-width banner | user_id, height |
[bp_group_avatar] | Group avatar image | group_id, size |
BuddyPress Messages Shortcode
When the Messages component is active, BuddyPress does not expose a standalone shortcode for the inbox. The [bp_member_messages] tag from the BuddyPress Shortcodes plugin fills this gap.
[bp_member_messages per_page="10"]
What it renders: The logged-in user’s message thread list with sender avatars, subject lines, and timestamps. The user must be logged in or the output is empty.
BuddyPress Activity Plus
BuddyPress Activity Plus adds rich media attachments to the activity feed. It does not add new shortcodes, but it does change the HTML output of [bp-activity] to include image/video attachment markup inside each activity item.
BuddyPress Polls
The BuddyPress Polls plugin adds one shortcode for embedding a specific poll on any page:
[bp_polls id="42"]
| Parameter | Default | Description |
|---|---|---|
id | required | The poll post ID |
show_results | false | Show results immediately without requiring a vote |
BuddyPress Member Blog
The BuddyPress Member Blog plugin adds shortcodes to embed per-user blog post feeds:
| Shortcode | What It Renders | Key Parameters |
|---|---|---|
[bp_member_blog_posts] | Blog posts by a specific member | user_id, count, show_excerpt |
[bp_member_blog_grid] | Member blog posts in a grid layout | user_id, count, columns |
Using BuddyPress Shortcodes with Elementor and Divi
Page builders like Elementor, Divi, and Beaver Builder all support shortcodes through a dedicated shortcode element. This is the standard way to embed BuddyPress components in drag-and-drop layouts.
Elementor
In Elementor, drag a Shortcode widget onto the canvas. Paste the shortcode tag into the field. Elementor executes it when the page renders.
A practical layout for a community hub page in Elementor:
- Section with 3 columns:
[bp_member_count],[bp_group_count],[bp_online_members count="5"] - Section with 2 columns:
[bp-member-list type="newest" per_page="6"]left,[bp-activity per_page="5"]right - Full-width section:
[bp-group-list type="popular" per_page="4"]
One issue to watch: Elementor builds the page outside BuddyPress’s normal page context. BuddyPress uses is_buddypress() internally to decide whether to enqueue its scripts. On an Elementor page, this returns false, which breaks AJAX-powered features like activity feed pagination and the “Load More” button.
Fix it by adding this to your child theme’s functions.php or a site plugin:
add_filter( 'bp_is_current_page', function( $is_page ) {
// Replace 'community-hub' with your page slug
return is_page( 'community-hub' ) ? true : $is_page;
} );
Divi
Divi uses a Code module for shortcodes. Add a Code module to any row or column, paste the shortcode, and save. The same bp_is_current_page filter applies when using AJAX-powered shortcodes on Divi pages.
Beaver Builder
Beaver Builder has an HTML module that processes shortcodes. Paste the shortcode tag in and it renders on page load. Beaver Builder’s handling of enqueued scripts is slightly different from Elementor, so you may not need the filter fix in all cases. Test with your specific setup.
How to Use Shortcodes with BuddyX Theme
BuddyX is designed to work with BuddyPress out of the box. When you use BuddyPress shortcodes on pages that run the BuddyX template, a few things improve automatically. You can read the full setup process in the BuddyX Theme getting started guide for BuddyPress communities.
- Wider content area - BuddyX uses a full-width layout for BuddyPress pages. Shortcode output inherits this wider container, so member grids and activity feeds have more horizontal room.
- Card-based member and group lists - the default BuddyPress member and group list templates render as basic list items. BuddyX overrides these with card-style layouts that include hover effects and better avatar sizing.
- Dark mode compatibility - every BuddyPress shortcode output is themed using BuddyX’s dark class system, so dark mode works without any extra CSS.
- Mobile-first grid - BuddyX applies a responsive grid to
[bp-member-list]and[bp-group-list]output automatically. On mobile (under 640px), the grid collapses to a single column.
If you are running a BuddyPress site and want the best shortcode rendering without writing custom CSS, BuddyX is the fastest path to a polished result. The theme is built specifically for BuddyPress communities and handles the layout heavy lifting for you.
Advanced: Building Custom Shortcodes on Top of BuddyPress
If the built-in shortcodes do not cover your use case, you can register a custom shortcode that wraps BuddyPress template functions. Here is a minimal example that outputs the current member’s display name:
add_shortcode( 'bp_current_member_name', function() {
if ( ! is_user_logged_in() ) {
return '';
}
return esc_html( bp_get_loggedin_user_fullname() );
} );
// Usage:
// [bp_current_member_name]
A more useful pattern is wrapping a BuddyPress template loop inside a shortcode. This lets you embed filtered data anywhere without touching page templates:
add_shortcode( 'bp_featured_groups', function( $atts ) {
$atts = shortcode_atts( [
'count' => 3,
'type' => 'popular',
], $atts );
ob_start();
if ( bp_has_groups( [
'type' => sanitize_key( $atts['type'] ),
'per_page' => absint( $atts['count'] ),
'max' => absint( $atts['count'] ),
] ) ) {
echo '<ul class="featured-groups">';
while ( bp_groups() ) {
bp_the_group();
printf(
'<li><a href="%s">%s</a></li>',
esc_url( bp_get_group_permalink() ),
esc_html( bp_get_group_name() )
);
}
echo '</ul>';
}
return ob_get_clean();
} );
// Usage:
// [bp_featured_groups count="5" type="newest"]
Keep custom shortcodes in a site-specific plugin or your theme’s functions.php. Avoid putting them in BuddyPress core files - updates will overwrite them.
Common Problems and How to Fix Them
Shortcode Outputs Raw Text Instead of HTML
This means the component the shortcode depends on is not active. Go to Settings > BuddyPress, click the Components tab, and enable the relevant component. Then save.
Member List Shows Only Admins or No Members
Check your exclude parameter. If you have accidentally excluded all non-admin user IDs, the list will be empty. Also confirm that the users you expect to see have a last_activity value in the database. New accounts without any activity sometimes do not appear in the active sort order.
Registration Form Redirects Back to Home
BuddyPress checks for its dedicated registration page before processing [bp-register]. Go to Settings > BuddyPress > Pages and make sure a page is assigned for Registration. If you placed the shortcode on a different page, BuddyPress may still redirect to the one set in settings. Use the filter bp_signup_redirect to override this.
Activity Feed Is Empty on a Custom Page
BuddyPress uses is_buddypress() to decide whether to load its scripts and styles. On a custom page with a shortcode, this check may return false, causing AJAX pagination to break. Add this to a site plugin:
add_filter( 'bp_is_current_page', '__return_true' );
Or target specific pages:
add_filter( 'bp_is_current_page', function( $is_page ) {
return is_page( 'my-custom-page' ) ? true : $is_page;
} );
Shortcode Works in Classic Editor but Not Block Editor
The block editor does not process shortcodes in a preview pane the same way the classic editor does. Your shortcode will still render on the published page, but the editor preview may show the raw tag. Use the Shortcode block in the block editor rather than pasting the tag inside a paragraph block. This tells the editor to handle it as executable code rather than text content.
Avatar Images Not Loading in Shortcode Output
BuddyPress serves avatars from the buddypress/avatars/ folder inside your uploads directory. If avatars are missing, check that the uploads directory is writable and that the BuddyPress avatar directory exists. You can also check your WordPress privacy settings: if the site is set to discourage search engines, some server configurations block direct image requests from non-whitelisted referers.
Shortcodes vs. BuddyPress Blocks
BuddyPress 9.0 introduced Gutenberg blocks for core components. Blocks are the forward direction for WordPress, and BuddyPress is aligned with that. But shortcodes are still relevant in 2026 for a few reasons:
- Widget areas - blocks do not work in classic widget areas. If your theme still uses a sidebar or footer with text widgets, shortcodes are the only way to embed BuddyPress content there.
- Page builders - Elementor, Bricks, Divi, and Beaver Builder all have a shortcode element that renders any shortcode. Blocks do not always translate into page builder contexts.
- Custom post type templates - if you are displaying BuddyPress content inside a WooCommerce, LearnDash, or custom post type template file using
do_shortcode(), shortcodes are easier to wire up than blocks. - Email templates - some email plugins parse shortcodes in email content. Blocks are not processed in that context.
If you are building new pages in the block editor and your theme supports Gutenberg fully, prefer BuddyPress blocks. For everything else, shortcodes remain a solid tool.
Setting Up BuddyPress for the First Time
If you have not set up BuddyPress yet, the shortcodes in this guide will not fire until the plugin is configured. The setup process takes about 10 minutes and covers installing BuddyPress, enabling the components you need, and assigning the required pages. Wbcom Designs has a full BuddyPress component and plugin directory at the BuddyPress Plugins Hub ecosystem guide to help you pick the right add-ons.
If you want to go deeper after setup, the guide to adding paid memberships to your BuddyPress community shows how shortcodes fit into a monetized community structure.
Once BuddyPress is running, the shortcodes in this reference are ready to use on any page, post, or widget area in your site.
Final Notes
BuddyPress ships eight core shortcodes that cover the main community components. Plugins like BuddyPress Shortcodes extend this to 20+ tags for messages, notifications, member counts, activity forms, and more. The BuddyX theme gives every shortcode a polished, responsive layout without extra CSS work.
Bookmark this page. As BuddyPress releases new versions and more plugins add shortcode support, this reference will be updated. The next major shortcode additions to watch are from the BuddyPress Groups Extras and BuddyPress Hashtags plugins, both of which are adding shortcode support in their 2026 roadmaps.
Related reading