Discussion Board – WordPress Forum Plugin


Discussion Board is an easy way to add a discussion board, message board or forum to your WordPress site. The plugin creates a new post type, allows you to add a front-end log-in and registration form and decide who has access to your Discussion Board. It’s ideal for people running:

  • 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

Users can post their own topics via the front-end form and reply to topics posted by others. Each topic features on its own page and you can list all topics via the archive template or the included shortcode.

As the owner of the site, you can 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
  • Specify roles for users who are permitted to post content
  • Specify different roles for users permitted to view content
  • Allow anyone to view the content but only permit specific user roles to post content

Discussion Board Pro

Discussion Board has a pro version which gives you more features, including:
* 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
* WYSIWYG editor

Check out the Pro demo here.

Discussion Board Demo

There’s a Discussion Board demo here. Feel free to register and post some sample content.

Discussion Board Features

  • Automatic setup: on activation, Discussion Board will create the pages and insert the shortcodes necessary for the plugin to work
  • Front-end log-in and registration
  • Restrict access by user role
  • Set different access levels for viewing and creating topics
  • Register new users as a specific role
  • Require users to activate their registration by clicking link in email – drastically reduces spam registrations
  • Anti-spam fields in registration form
  • Hide wp-login.php page if required
  • Prevent user re-posting within set time to reduce any spam posts
  • Simple styles to match any theme
  • Enqueue / dequeue plugin styles easily
  • Include / exclude icons
  • Optional single and archive templates with hookable opening and closing wrapper tags – style the templates to match your theme
  • Shortcodes for topic archives, recent topics and log-in form
  • Compatible with Simple Comment Editing to allow users to make edits to their comments
  • Block registrations from specific emails and email domains


  • Français
  • Русский


  • Discussion Board table view
  • Multiple Boards (Pro Version)
  • Single View (Twenty Sixteen theme)
  • Discussion Board options


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


Installation Instructions

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 install 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 and a pro demo here. 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.


Excellent Plugin and Great Support

The plugin is excellent, feature rich, simple to set up, and intuitive for users. I am even stretching the functionality to turn the boards into a form of private groups, using the permissions associated with my community member/profile system. And, a huge thanks to Gareth at Catapult for the support he has given to resolve a minor theming issue. He has been helpful, patient and gone above and beyond to diagnose and fix the problem.

Great Support

We had a recent issue when using the plugin and Gareth took time to log into our WordPress install to help us resolve the problem. The plugin works great and I highly recommend it. Thanks again to Gareth for his assistance.

Outstanding support

After the update to 2.1.1 I had problem with WP installation (too many redirects). Support of discussion board team (Gareth) was great. He logged in to my side and fixed the issue. At the end it was a configuration issue. It is really a great plugin and with an outstanding support.

Great plugin & Amazing support

I’ve tried several board plugins and they were too complicated and not what I wanted. This plugin is clean and simple. It’s not perfect yet, but the amazing support by the developer makes that a non-issue. I’m really happy I purchased this plugin and look forward to its future features 🙂

Thank you and keep up the great job!

simple membership

Having one serious issue with simple membership plug. It is perfect for my site but cannot set it to free membership level. The JOIN US asks registered voters for payment. this is not what I need. I’m open to suggestions. Thank you.

PS I started with email subscriber but my one subscriber 2 emails to unsubscribe.

Read all 22 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 3 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.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