bbPress is a free WordPress plugin from Automattic that adds discussion forums to WordPress. It is lightweight by design – forums store as WordPress custom post types, use WordPress’s native user system, and integrate cleanly with WordPress themes without a separate frontend framework. For sites that need a forum without a heavyweight community platform, bbPress is the practical choice.
Forum Structure: How bbPress Organises Discussions
bbPress uses a three-level hierarchy: Forum -> Topic -> Reply. A Forum is the top-level container (e.g., “Support Questions”, “General Discussion”). A Topic is a discussion thread within a forum (e.g., “How do I configure the search filter?”). A Reply is a response to a topic. Forums can be nested inside other forums as sub-forums for more granular organisation.
Before creating forums, plan your structure. A support forum might have: General Questions, Bug Reports, Feature Requests, and Announcements (moderated, replies disabled). A community forum might have: Introductions, Off-Topic, Industry Discussion, Resources. Keep the structure flat – two levels maximum. Deep forum hierarchies confuse visitors and dilute discussion density in each forum.
Step 1: Create Forums
Go to Forums -> New Forum. Create each top-level forum. Configure:
- Forum status – Open (anyone can post), Closed (no new topics), Hidden (invite-only), or Private (logged-in users only)
- Forum type – Forum (standard discussion forum) or Category (a header grouping other forums, not itself postable)
- Forum order – the numeric position in the forum list
After creating top-level forums, create sub-forums by setting their Parent Forum to the relevant top-level forum.
Need help building a community site? Describe your project and get a free estimate.
Step 2: User Roles and Permissions
bbPress adds its own user roles alongside WordPress roles: Keymaster (full forum admin), Moderator (can edit/delete any post), Participant (normal forum member), Spectator (can view but not post), and Blocked (banned from forums). Go to Settings -> Forums -> User Roles to see how WordPress roles map to bbPress roles.
Key configuration: set the minimum role required to create new topics and to reply to topics. For an open community forum, Spectator (any visitor) can read, and Participant (registered user) can post. For a members-only support forum, require login for viewing and posting.
Step 3: Spam Prevention
Open forums attract spam posts quickly. Multiple layers of protection are necessary:
- Require login to post – the most effective spam prevention. Anonymous posting allows spam bots.
- Email verification at registration – prevents fake account creation for spam posting.
- Anti-spam plugin – Akismet has bbPress integration and filters spam posts to a moderation queue. Enable the Akismet bbPress integration in Akismet settings.
- New user post moderation – hold the first N posts from new users for moderation before they appear publicly. Configured in Settings -> Forums -> Moderation.
Step 4: Email Notifications
bbPress sends email notifications when topics receive replies. By default, topic authors receive notifications when someone replies. Members who participated in a topic also receive notifications. Configure notification defaults in Settings -> Forums -> Subscriptions.
bbPress uses WordPress’s wp_mail() function for notifications. Install WP Mail SMTP to ensure reliable email delivery – forum notification emails are transactional and need reliable delivery to maintain community engagement. Without SMTP, notifications may fail silently or land in spam.
Step 5: Theme Integration
bbPress generates its own HTML for forum pages. On most themes, this looks functional but may not match the theme’s typography and spacing perfectly. bbPress forum templates can be overridden in your child theme by creating a bbpress/ folder and copying template files from the bbPress plugin’s templates/ directory. This is the same override pattern as WooCommerce.
Alternatively, bbPress-specific CSS in your theme’s stylesheet adjusts colors, spacing, and typography without template overrides. Target the .bbpress container class and its children to scope styles to bbPress pages only.