If you find this useful, then please consider donating a small amount towards my time and effort in developing and maintaining solutions.


This Plugin creates unlimited private forum groups.  Forums are then allocated to one or more groups, and users allocated to one or more groups.

What this achieves

  • Unlimited private groups
  • Each user is set to a group or groups, and each forum can have none, some or all the groups associated with it.
  • Any number of public forums combined with any number of group forums.  The group forums can be individually set to public or private.
  • Forum title and description (but not topics or replies) can be set to be visible to non-group users, allowing people to see that a forum exists but not access it.
  • Separate pages can be set to allow redirection of non group users for sign-up or information.

Example So if

  • User a belongs to group 1
  • User b belongs to group 2
  • User c belongs to group 3


  • Forum x is set to allow group 2
  • Forum y is set to allow group 2 and group 3
  • Forum z is set to allow group 1 and group 3


  • User a can access only forum z
  • User b can access forum x and forum y
  • User c can access forum y and forum z


The widgets

  • (bbpress) forums list,
  • (bbpress) recent replies, and
  • (bbpress) recent topics

SHOULD NOT BE USED, as they will show topics headings and author names for all forums. 

Replacement widgets called

  • (pg) forums list,
  • (pg) recent replies, and
  • (pg) recent topics

and a new widget called

  • (pg) Latest Activity which has awesome settings to allow you lots of display customisation

are available instead


1. Install this from the wordpress plugin site  Go to Dashboard>plugins>add new

3. In the search box type ‘private groups’ You will see ‘Private Groups by Robin Wilson’

4. Click install now

5. and then activate

6. Go into settings and set up as required.


Example One – single restricted forum per user group For instance if you wanted separate forums for doctors and nurses, so the users will only ever have one restricted forum (and any number of public unrestricted), this becomes quite easy, you can just set a group for each forum. Then each user is set to be either a doctor or a nurse. The doctors forum is then set to allow the doctor group and the nurses forum the nurse group

Example two – users across two restricted forums For instance if you had forums ‘teachers’ and ‘pupils’, and you wanted only teachers to access the teachers forum, but teachers and pupils to access the pupils forum the you could set up a ‘teacher’ group and a ‘pupil’ group. The teachers forum would only permit the group ‘teacher’,  but the pupil forum would permit both the teacher and the pupil groups.

Settings Go to Dashboard>settings>Private Groups There are 3 settings tabs.

Forum Visibility tab. This tab allows you to set forum visibility. By default where the forum has groups set, then these are only visible to authorised users.  However you may want users to see that forums exist (to attract new forum users), but not to see content. For instance on a cookery site you might have a cake group, who exchange recipes and advice on cakes.  You might want people to sign up before being able to contribute, but if they don’t know the forum exists, they won’t join. So by listing the forums (and optionally the description – see tab below) users can see they exist, and if they click the forum or freshness links, they can be taken to any url or wordpress page you wish.  Typically this might be a sign-up page, or a ‘you can’t access’ page. For instance you page might say Sorry, you need to be a member to see this area. To join <click here> Login if needbe [bbp-login] In this tab, you can set whether non-group members can see the forums in the indexes (but not access).  If the forum is set to public, then both non-logged in and logged in users will see this.  If the forum is set to private, then only logged in users will see the existence of these forums. this gives a highly granular approach to what forums are displayed for different groups. If visibility is set, then  there are options for redirecting, and what freshness messages are displayed.

General Settings

In general settings, you have the ability to hide topic and reply counts, show sub-forum descriptions, and remove the ‘private’ prefix from the forum displays.

Group Name Settings

Here you set  ‘friendly’ names for the groups, to help you remember.  These names do not affect how the restrictions work, group 1 will remain group 1 whatever you name it.

Management Information

This tab lists the groups, what forums are allocated to them, and the number of users each group has.

User Management T

his tab allows for the bulk change of users between (and to and from) the groups.

Assign groups to roles

For sites that use membership plugins and the like, the ability to automatically join a group to a role on signup might be useful. This section allows this to happen.

To set forums For each restricted forum

  1. Go in to Dashboard>forums and select the forum you wish to restrict.
  2. Under the text you’ll see a box called ‘Forum Groups’ – select the group or groups you wish to allow to access this forum
  3. If you wish to have a custom error message, you can set one here.

Setting Widgets

The bbPress topics and replies widgets will still at this stage show all topic and reply titles etc. If a topic/reply is selected this will give an error message, but titles and authors will be visible, which might be embarrassing ! So you will probably not want people to see these subjects, so there are 3 new widgets that the plugin has added that filter this to only show appropriate content. Go in to Dashboard>appearance>widgets

  1. You will see three new widgets starting with (private groups) and covering topics, replies and Topics lists.
  2. If you are using the standard bbPress topic, reply or forum list widgets, you should remove these from your sidebar and replace them with the (private groups) ones

 Roles private_group_role



Groups Shortcode

A shortcode to list users either across all groups or per group [list-pg-users ] lists all groups and their users [list-pg-users group=$group] lists users of a single group name eg [list-pg-users group=’developers’]