Discussion Board – WordPress Forum Plugin


Discussion Board is an easy way to add a forum to your WordPress site. It has a one-click installation and stacks of essential features that make it the leading WordPress forum plugin. In brief:

  • Users can register and log in via a front-end form
  • Users post new forum topics via a simple form
  • Each forum topic is displayed on its own page where other users can reply

WordPress forum plugin demo

Test out a live demo version of our forum plugin here. Note that this demo includes some features only available with the Pro version. Feel free to register and post some sample content.

One-click installation

Discussion Board has a unique, one-click set-up. When you activate the plugin, it will automatically create the three pages you need to get your WordPress forum up and running:

  • A log-in page
  • A page with a form for users to post new topics
  • A page to view existing topics.

Your WordPress forum is up and running straightaway with no need to do any further configuration if you don’t want to.

User management

A key feature of Discussion Board is the ability to control separately who can view your WordPress forum and who can actually post to it. You can specify the required role for users to post new topics and, separately, you can specify the required role for users to view topics. So, for instance, you could allow anyone to view the content but only permit specific user roles to post content.


You can specify which role new users will be assigned when they register. You can also require users to activate their registration by verifying their email address – this drastically reduces spam registrations.

In the Pro version, you also have the option to approve new registrations yourself if you want.

Front end log-in

Discussion Board has a complete front-end registration and log-in system. You can choose whether to use the standard WordPress system or keep everything on the front-end.

Spam reduction

As well as the restrictions over registration, you can limit the frequency that users can re-post. This will reduce possible spamming. As the owner of the site, you can also choose whether new topics should be published immediately or held as draft in order for you to moderate them. You can use standard WordPress settings to determine moderation levels for comments or set different rules for topics.

Even more, you can block specific email addresses or entire domains from being able to register accounts.


Discussion Board is designed to work with any theme. You can update colors through the Customizer. Currently, there is a choice of three layouts, using either the standard WordPress archive layout from your theme or more classic forum layouts.

Discussion Board should work out of the box with your theme. However, if you want to extend it and integrate it more closely, there are some optional templates supplied with the plugin that have hookable opening and closing wrapper tags so you can style the templates to match your theme.


Discussion Board has a number of shortcodes. Some of these are installed automatically when you activate the plugin. Others are optional for usage around your site, including:

[discussion_board_form] – displays a form for users to post a new topic (automatically installed)
[discussion_topics] – displays a list of all topics (automatically installed)
[discussion_board_login_form] – displays a log-in and registration form for new users (automatically installed)
[discussion_board_login_only] – displays a log-in form without a registration form
[discussion_board_registration_only] – displays a registration form without a log-in form
[discussion_board_log_in_out] – displays a log-in / log-out link
[is_logged_in] – use this shortcode to display content only to users who are logged in
[not_logged_in] – display content only to users who are not logged in

What can I use this for?

You can use this plugin to create any type of forum that you like. Typically, this would include:

  • Community forums
  • School or other education sites
  • Training websites
  • Support forums
  • Discussion forums
  • Niche sites
  • Discussion groups
  • Question and answer sites
  • Technical forums
  • Ecommerce sites
  • Bulletin boards
  • Job boards

WordPress forum theme

Although Discussion Board should work with pretty much any WordPress theme, we developed Singularity – a free theme that integrates with Discussion Board. It’s available to download from the WordPress themes directory.

Why have a forum on my WordPress site?

There are many, many reasons to want to install a WordPress forum plugin on your site. In brief, these might include:

  • SEO benefits – there are two key benefits to having a forum on your site. Firstly, you are benefitting from user generated content, where your users are writing your content for you and coming up with all kinds of keywords you never would have included in your content yourself. Secondly, users will spend longer on your site because of your forum, either writing their own posts or reading other people’s content. Google considers dwell time on a website to be a key quality metric.
  • Get closer to your users – a forum is a priceless way of learning more about what makes your users tick, whether the forum is support-based or just a general community discussion board.
  • Market more effectively – when users register for your forum, they are providing you with their email address, meaning that you have a great opportunity to market directly to people you know are interested in your offering.


Full documentation and guidance on getting started with the plugin and on its features is here.

Is there a Pro version?

Oh yes, there’s a Pro version to give you even more possibilities with your forum. Features include:

  • Multiple Discussion Boards for different subjects
  • Set statuses for topics, e.g. ‘Resolved’, ‘Open’, etc
  • Categories and tags
  • Image uploads
  • User profiles
  • Topic following (subscribe to topics)
  • Board following – subscribe to a board and get notified of all new topics and comments for that board
  • Board permissions – set topics within boards to be post-only (so no replies) or author-only (only the author can view replies)
  • Admin approvals – optionally require all new registrations to be approved by an admin
  • WYSIWYG editor

Check out the Pro version here.


If you would like to contribute to the plugin, we’ve put together a guide on how to contribute.


  • Discussion Board list of topics (includes some Pro features)
  • Example topic with replies (includes some Pro features)
  • Login / Registration page
  • Discussion Board list of topics with latest topics sidebars
  • Archive layout of Discussion Board list
  • Classic Forum layout of Discussion Board list
  • Table layout of Discussion Board list


From your dashboard

  1. Go to Plugins > Add New
  2. Search for ‘Discussion Board’
  3. Activate Discussion Board form the Plugins page
  4. Go to Discussion Board > Settings to update any settings


I’ve installed Discussion Board. Now what do I do?

Discussion Board will automatically create three pages for you:

  • A page with a log-in and registration form
  • A page with a form for users to post new topics
  • A page listing existing topics

There are further, detailed instructions for the free and pro versions on the website.

Where can I see a demo?

There’s a demo here. Note that this demo includes some features only available with the Pro version. Feel free to register and post some content so that you can see how it works from the user’s point of view.

Some users are reporting that they don’t receive an activation email

In the first instance, ask them to check their spam/junk folders. If you’ve tested and you’re certain emails aren’t getting through, use the Postman SMTP plugin or similar to assist the delivery of email from your site. It’s a more reliable way of ensuring emails are sent and received.

Do I need to enable registration on my site?


I see an error message about invalid post type. What’s that?

In your dashboard, just go to Settings > Permalinks. Then everything should be fine.

Help, I can’t seem to log out. Why?

We’ve included a helpful log-in / log-out shortcode to display a log-in / log-out link. Use a plugin like Shortcode Widget and add the [discussion_board_log_in_out] shortcode to your sidebar or other widget area of your choice. The plugin also automatically displays a log-out link under the new topic form.

My shortcodes display as shortcodes, not as the content they’re supposed to render. Why?

Be careful if you are copying and pasting the shortcodes – you might need to delete <code> tags. Click on the ‘Text’ tab in your content editor to see if these tags are there.


July 6, 2024 2 replies
As an advanced wp beginner, a bit disappointed, can not find a tutorial on-line for the plug in, as with other forum plug-ins. And sorta minimal set up instructions. Any advice?
July 3, 2024 2 replies
I just want to say thank you for developing such a good plugin.I have finished the Korean translation for ‘Discussion Board – WordPress Forum Plugin’And I hope it will be translated into more languages so that many WordPress users can use it conveniently. 좋은 플러그인을 개발해주어서 고맙다는 인사를 전하고 싶습니다.’Discussion Board – WordPress Forum Plugin’ 의 한국어 번역을 모두 마쳤습니다.그리고 ‘Discussion Board – WordPress Forum Plugin’ 플러그인이 보다 다양한 언어로 번역되어 많은 워드프레스 사용자들이 편리하게 사용할 수 있기를 바랍니다.
March 24, 2024 2 replies
I installed the plugin but it doesn’t add the three pages. When I click on the menu on my website nothing happens. The instructions don’t say how to have the forum actually connect to your website.
Read all 41 reviews

Contributors & Developers

“Discussion Board – WordPress Forum Plugin” is open source software. The following people have contributed to this plugin.


“Discussion Board – WordPress Forum Plugin” has been translated into 7 locales. Thank you to the translators for their contributions.

Translate “Discussion Board – WordPress Forum Plugin” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


2.5.3, June 22, 2024

  • Added: new text field to add an Archive Description
  • Improved: display the archive title and archive description on the archive page

2.5.2, May 08, 2024

  • Added: new textarea field in the General Tab, allowing users to input custom messages to display post-topic submission
  • Improved: Compatibility with WP 6.5 and PHP v8+
  • Improved: Improvements to the metadata API
  • Improved: Registering scripts with async and defer attributes
  • Improved: Caching for Database Queries in WP_User_Query

2.5.1, September 07, 2023

  • Improved: Compatibility with PHP 8 and up
  • Improved: Compatibility with WP 6.3 and up

2.5.0, August 25, 2023

  • Fixed: Upload media not displaying on front-end
  • Improved: Tags and codes sanitization

2.4.9, July 25, 2023

  • Improved: Tags and codes sanitization
  • Improved: Security

2.4.8, May 03, 2023

  • Improved: Compatibility with WP 6.2
  • Improved: Profile and boards archive pages
  • Updated: Topic’s archive that supports PRO version to display category and tags

2.4.7, March 07, 2023

  • Added: [discussion_board_registration_only] Register only tab shortcode
  • Updated: Plugin’s Description

2.4.6, September 20, 2022

  • Added: Screenshots to details page
  • Updated: List of Contributors & Developers

2.4.5, June 08, 2022

  • Fixed: Bug where login page was sometimes not being redirect to from WP-Admin
  • Fixed: Only show edit button when an admin user is viewing the forum
  • Added: German translation files

2.4.4, February 09, 2022

  • Fixed: Don’t redirect to login page for password protected
  • Added: Ability to log in with email address or username

2.4.3, January 13, 2022

  • Updated: Use select2 for multi select on the roles and permissions input field
  • Fixed: Don’t redirect to the login page if it does not exist
  • Fixed: Load settings when a cron is running

2.4.2, August 11, 2021

  • Added: oEmbeds for replies

2.4.1, June 24, 2021

  • Fixed: Always enqueue customizer color picker as some themes don’t include it
  • Fixed: Allow user to reset password when forcing the plugin login form

2.4, May 13, 2021

  • Major update, please test before upgrading
  • Updated: Refactor admin code to be cleaner and easier to extend
  • Added: Free license registration form

2.3.18, May 6 2021

  • Updated: Updated the POT translation files to include new strings
  • Updated: French and Russian translation files

2.3.17, April 14 2021

  • Added: Ability to add custom checkbox fields to the registration form

2.3.16, March 8 2021

  • Fixed: Registration form required fields throw validation if not filled out
  • Fixed: After a user registers, don’t show the registration form again

2.3.15, May 11, 2020

  • Added: ctdb_admin_email filter
  • Fixed: added second parameter to wp_login

2.3.14, March 24, 2020

  • Added: integration with Invisible reCaptcha plugin

2.3.13, May 15, 2019

  • Fixed: duplicate topics
  • Updated: removed bullet points from Divi navigation

2.3.12, April 14, 2019

  • Added: ctdb_email_notification_publish_topic hook

2.3.11, April 12, 2019

  • Added: ctdb_email_notification_new_topic hook
  • Updated: removed irritating bullet points from Visual Composer in pagination

2.3.10, April 9, 2019

  • Updated: removed irritating bullet points from Visual Composer

2.3.9, March 11, 2019

  • Added: option to hide registration form

2.3.8, February 18, 2019

  • Updated: missing translatable strings in registration form
  • Updated: check for prevent_wp_admin_access not empty

2.3.7, November 11, 2018

  • Fixed: updated links to support articles on About page
  • Fixed: Divi formatting issues
  • Updated: removed tracking

2.3.6, September 11, 2018

  • Updated: redirect admins to dashboard after logging in

2.3.5, February 20, 2018

  • Added: email subject line filters

2.3.4, February 7, 2018

  • Updated: tracking class for improved performance

2.3.3 – January 18, 2017

  • Updated: broken link in readme file

2.3.2 – December 9, 2017

  • Updated: admin update

2.3.1 – December 8, 2017

  • Added: ctdb_filter_permitted_viewer_roles filter
  • Updated: CT_DB_Front_End::check_user_permission hooked to wp

2.3.0 – October 25, 2017

  • Added: direct user to About page on activating plugin
  • Fixed: save additional user meta at user registration
  • Updated: default prevent_wp_admin_access value to 0
  • Updated: admin notices

2.2.13 – October 23, 2017

  • Updated: better sanitization for user registration

2.2.12 – October 16, 2017

  • Added: minor CSS updates
  • Added: filter for empty comments file
  • Added: functions-registration.php file
  • Fixed: ensure filter_single_content is in loop
  • Fixed: removed multiple log-in forms

2.2.11 – June 29, 2017

  • Fixed: redirect issue with resetting passwords

2.2.10 – June 7, 2017

  • Added: wpautop on get_comment_text() in functions-skins.php

2.2.9 – April 25, 2017

  • Added: ctdb_topic_date_time function
  • Added: $author parameter to ctdb_info_bar_table filter
  • Added: ctdb_get_most_recent_commenter function
  • Added: new parameters to ctdb_topic_body_fields filter
  • Added: new parameter to ctdb_topic_title_fields
  • Added: ctdb_filter_table_layout filter
  • Fixed: ensure admins can always access backend
  • Updated: replaced esc_url with esc_url_raw in login_user and redirect_to_login_page

2.2.8 – April 19, 2017

  • Added: ctdb_comment_author_url filter
  • Fixed: incorrectly respecting display_as setting in comments
  • Fixed: incorrectly obtaining commenter’s website address
  • Updated: no longer send new topic notifications for trashed topics

2.2.7 – April 16, 2017

  • Updated: removed color options from Design tab

2.2.6 – April 12, 2017

  • Fixed: converted empty $viewer_roles to array in function-user.php
  • Updated: Plugin_Usage_Tracker to 1.0.2

2.2.5 – April 5, 2017

  • Added: translation request
  • Fixed: parse error in comment author filter

2.2.4 – April 3, 2017

  • Updated: better mobile layout
  • Updated: new comment notifications only on discussion-topics post type
  • Updated: POT file
  • Updated: moved ctdb_discussion_topics_shortcode_atts filter before extract (thanks jf_bertrand)
  • Updated: global notifications setting to prevent duplicate notifications
  • Updated: plugin title

2.2.3 – March 12, 2017

  • Added: WPML support
  • Added: filterable front-end messages in functions-messages.php
  • Fixed: correctly insert default ctdb_options_settings values
  • Fixed: parse error for value in settings WYSIWYG callback
  • Fixed: only filter display name for Discussion Topics post type
  • Fixed: translation issues with General settings messages
  • Updated: removed admin notices
  • Updated: removed actions in ct-db-admin-upgrades
  • Updated: used add_query_arg in wp_redirect in several locations
  • Updated: admins no longer redirected after logging in

2.2.2 – March 6, 2017

  • Added: ctdb-actions-wrapper in class-ct-db-skins.php
  • Added: ctdb_meta_data_fields_filter filter in class-ct-db-skins.php
  • Added: ctdb_meta_data_field_titles_filter filter in class-ct-db-skins.php
  • Added: redirecting parameter to url after logging in
  • Fixed: respects enqueue_icons setting
  • Updated: rationalized CSS

2.2.1 – February 21, 2017

  • Added: stripslashes in new topic $content
  • Fixed: deselecting checkboxes in settings
  • Fixed: display_user_name respected by comment author field
  • Updated: tracking code
  • Updated: code refactoring

2.2.0 – February 2, 2017

  • Added: Registration blacklist – block email addresses and domains from registering
  • Updated: tracking snippet

2.1.1 – January 24, 2017

  • Added: Simple Comment Editing support
  • Added: tracking

2.1.0 – January 16, 2017

  • Added: Customizer support
  • Added: color settings
  • Added: pass $class to CT_DB_Front_End::display_all_topics
  • Updated: code refactoring
  • Updated: use DB_PLUGIN_DIR in template uploader

2.0.0 – January 6, 2017

  • Added: automatic installation of shortcodes and pages
  • Added: theme detection and automatic formatting for some popular themes
  • Fixed: enable_notification_opt_out
  • Fixed: correctly hides log-in form when specified
  • Updated: changed directory structure
  • Updated: moved settings to Topics admin page
  • Updated: renamed Topics admin page to Discussion Board
  • Updated: renamed Options tab to General

1.7.4 – January 3, 2017

  • Fixed: version

1.7.3 – January 3, 2016

  • Fixed: incorrect text domain for translations

1.7.2 – December 28, 2016

  • Fixed: default settings not loading correctly

1.7.1 – December 23, 2016

  • Added: new_topic_button shortcode linking to New Topic page
  • Added: $atts parameter to ctdb_discussion_topics_shortcode_args
  • Added: global $ctdb_user_can_view variable
  • Added: number parameter for discussion_topics shortcode
  • Added: ctdb_new_topic_form_validation filter
  • Fixed: redirect page after log-in not working
  • Updated: globalized $CT_DB_Public, $CT_DB_Front_End variables
  • Updated: better topic form validation – doesn’t wipe all content when a field is missing

1.7.0 – December 9, 2016

  • Added: CT_DB_Skins class to handle layout styles
  • Added: CT_DB_Admin_Upgrades class for upgrades
  • Added: classic forum layout style
  • Added: conditional tags in the_content filters
  • Added: ‘voices’ count
  • Added: selectable meta data fields to display on single topic pages
  • Updated: topic information bar now described as topic meta data
  • Updated: Info bar layout re-termed as ‘Single topic layout’
  • Updated: improved single topic meta data layout
  • Updated: icons no longer appear against poster name and topic date

1.6.1 – December 5, 2016

  • Added: ctdb_discussion_topics_shortcode_orderby filter
  • Added: table output now filterable

1.6.0 – December 1, 2016

  • Added: ctdb_discussion_topics_shortcode_args filter
  • Added: query parameters to discussion_topics shortcode
  • Updated: use strip_tags in notification email


  • Added: ctdb_info_meta_wrap_after_replies filter on table layout
  • Fixed: pagination on discussion_topics shortcode on static homepage
  • Updated: admin notices


  • Added: opt out feature – allows topic author to choose not to select notifications
  • Added: optional layouts for single.php
  • Added: avatar to shortcode table layout
  • Updated: include comment content in notification email
  • Updated: default layout is now table
  • Updated: disabled email_notification to avoid duplicate notifications


  • Added: table layout


  • Fixed: parse errors on failed log-in


  • Fixed: missing filter to hide comments


  • Fixed: email notifications for topics requiring moderation
  • Updated: registration field rendering method


  • Added: action hook ctdb_start_new_topic_form
  • Added: extra shortcodes for log-in and registration forms
  • Added: shortcodes for logged in and non-logged in users
  • Added: filter author name in information bar
  • Added: admin notification class
  • Updated: additional front end styles
  • Updated: retain field values in unsuccessful registration form
  • Updated: validation message


  • Added: filter for admin tabs
  • Added: 0 option for reposting delay
  • Added: AJAX validation on registration form
  • Fixed: pagination issue with all topics shortcode on Twenty Sixteen theme
  • Updated: refactored code into smaller classes
  • Updated: notify admin of moderated comment
  • Updated: strip_shortcodes in posted content


  • Added: flush rewrite rules on activation
  • Fixed: missing comment form fields


  • Updated: tested to tag


  • Added: hide log-in form option
  • Added: multiple filters
  • Added: new action hooks
  • Changed: email address must be specified for notifications to be sent
  • Fixed: replace comments template with empty file for excluded users
  • Fixed: correct path to plugin templates


  • Fixed: missing assets in admin


  • Fixed: missing assets in admin


  • Fixed: closed <a> tag after Lost Password link


  • Added: Define email address to send notifications to


  • Fixed: Reset query in shortcode.


  • Added: French translation (thanks to Oazar)
  • Added: Russian translation


  • Changed: updated plugin for better translation support


  • Change: defined constant for plugin directory
  • Fix: incorrect post type in shortcode queries


  • Fix: incorrect post type in notification email to admin


  • First commit