Groups is a WordPress plugin that provides group-based user membership management, group-based capabilities and content access control. It integrates standard WordPress capabilities and application-specific capabilities along with an extensive API.


New Groups Restrict Categories and Groups Import Export.

  • Groups 404 Redirect allows to redirect visits to pages that are protected by Groups.
  • Groups Blog Protect restricts access to blogs based on group membership.
  • Groups File Access Groups File Access is an extension that allows to provide file download links for authorized users. Access to files is restricted to users by their group membership.
  • Groups Forums provides a powerful and yet light-weight forum system for WordPress sites.
  • Groups Gravity Forms allows to add users to groups automatically, based on form submissions.
  • Groups Import Export – An import and export extension for Groups.
  • Groups Jigoshop Groups integration for Jigoshop that supports memberships and subscriptions.
  • Groups Newsletters helps you to communicate efficiently, providing targeted information to groups of recipients through automated campaigns.
  • Groups Notifications allows to send automatic notifications to group members and the site administrator.
  • Groups PayPal – Sell memberships and subscriptions with Groups and PayPal.
  • Groups Restrict Categories features access restrictions for categories, tags and other WordPress taxonomies, including support for custom post types and taxonomies.
  • Groups Restrict Comments Pro This extension for Groups allows to restrict who can post or read comments based on a user鈥檚 group membership.
  • Groups Subscriptions is a subscription framework for Groups.
  • Groups WooCommerce Groups for WooCommerce is a WordPress plugin that allows you to sell memberships.
  • WooCommerce Group Coupons This extension for WooCommerce uses Groups and WordPress roles to limit the validity of coupons.
  • WooCommerce Groups Newsletters The WooCommerce Groups Newsletters extension lets customers subscribe to newsletters at checkout.


User groups

  • Supports an unlimited number of groups
  • Provides a Registered group which is automatically maintained
  • Users can be assigned to any group
  • Users are added automatically to the Registered group

Groups hierarchy

  • Supports group hierarchies with capability inheritance

Group capabilities

  • Integrates standard WordPress capabilities which can be assigned to groups and users
  • Supports custom capabilities: allows to define new capabilities for usage in plugins and web applications
  • Users inherit capabilities of the groups they belong to
  • Groups inherit capabilities of their parent groups

Access control

  • Built-in access control that allows to restrict access to posts, pages and custom content types to specific groups and users only
  • control access to content by groups: shortcodes allow to control who can access content on posts, show parts to members of certain groups or to those who are not members Shortcodes: [groups_member], [groups_non_member]
  • control access to content by capabilities: show (or do not show) content to users who have certain capabilities Shortcodes: [groups_can], [groups_can_not]

Easy user interface

  • integrates nicely with the standard WordPress Users menu
  • provides an intuitive Groups menu
  • conceptually clean views showing the essentials
  • quick filters
  • bulk-actions where needed, for example apply capabilities to groups, bulk-add users to groups, bulk-remove users from groups

Sensible options

  • administrator overrides can be turned off
  • optional tree view for groups can be shown only when needed
  • provides its own set of permissions
  • cleans up after testing with a “delete all plugin data” option

Access Control

Groups defines some capabilities of its own. The groups_read_post capability is used to restrict access to certain posts or pages to groups (and users) with that capability only.


  • Solid and sound data-model with a complete API that allows developers to create group-oriented web applications and plugins


  • All features are supported independently for each blog in multisite installations

Your opinion counts

You & Groups

Beta-testers and developers who need to integrate group-based features in their plugins and web applications: please use it and provide your feedback.


Feedback is welcome!

If you need help, have problems, want to leave feedback or want to provide constructive criticism, please do so here at the Groups plugin page.

Please try to solve problems there before you rate this plugin or say it doesn’t work. There goes a lot of work into providing you with free quality plugins! Please appreciate that and help with your feedback. Thanks!


Follow me on Twitter for updates on this and other plugins.


Content Access Control

Access restrictions on posts

On posts an pages (and custom content types) a new meta box titles Access restrictions appears. By checking Enforce read access, you can restrict access to the post to groups and users who have the groups_read_post capability. You need to assign this capability to a group and make users members of that group to allow them to see those posts.

Content visibility for members and non-members

The [groups_member] and [groups_non_member] shortcodes are used to limit visibility of content to users who are members of a group or users who are not members of a group. Multiple comma-separated groups can be specified.

Example: Limiting visibility of enclosed content to registered users.

[groups_member group="Registered"]

Only registered users can see this text.


Content visibility based on capabilities

The [groups_can] and [groups_can_not] shortcodes limit visibility of enclosed content to those users who have the capability or those who do not have it. Multiple capabilities can be given.

Example: Showing enclosed content to users who can edit_posts (standard WordPress capability).

[groups_can capability=”edit_posts”]

You can see this only if you have the edit_posts capability.


Integration in the ‘Users’ menu:

Users – group membership is managed from the standard Users admin view. Users are automatically added to the Registered group. You can add multiple users to other groups here and also remove them.

Sections in the ‘Groups’ menu:


Here you can:

  • add groups
  • remove groups
  • assign capabilities to groups


This is where you add, remove and manage capabilities.

Capabilities can be assigned to groups and users (1). These capabilities include the standard WordPress capabilities but you can also define additional capabilities for your web-application.

Groups defines some capabilities of its own. The groups_read_post capability is used to restrict access to certain posts or pages to groups (and users) with that capability only.

(1) Assigning capabilities to users is not integrated in the user interface yet but can be done through API calls.


Administrator override :

Administrator overrides can be turned off.

Permissions :

For each role these permissions can be set:

  • Access Groups: see information related to Groups.
  • Administer Groups: complete control over everything related to Groups.
  • Administer Groups plugin options: grants access to make changes on the Groups > Options admin section.

Testing the plugin :

A convenient option is provided to delete all data that has been stored by the Groups plugin. This option is useful if you just need to start from fresh after you have been testing the plugin.


Please visit the documentation page on shortcodes for up-to-date information: Groups Shortcodes


Download the Groups plugin on WordPress.

1,743 Responses to Groups

  1. Andrei G July 7, 2015 at 5:27 pm #


    I am using currently the Groups plugin with a couple of extensions on a private site that requires login to be viewed. I am looking to create two additional sites that will share possibly the same user and user meta database.

    The idea is that some users will have access to one, two or all sites, depending on what Groups they’re assigned to.

    Is this something that is possible with the Groups plugin or how should I go about it?


    • kento July 8, 2015 at 3:25 pm #

      Hi Andrei,

      Given that we don’t have a RESTful or similar API integrated in Group yet, you’d have to cook your own solution. I’ve heard someone mention shared database tables but am not sure how stable that would be and how much sense that would make for your setup. You could also build some API points yourself so that when site 2 needs to ask about group membership for a user, it would call site 1 and get the required info. Not a simple task but it could be done, I hope that helps somehow.


  2. Jeff July 14, 2015 at 12:37 am #

    I’m using Groups with the WooCommerce extension, and have run into a problem. It’s possible for someone to order membership (which adds them to a special group) and a physical product in the same order. The provisioning system I’m using for physical products puts the order in “pending” state until the order ships, and the user is not added to the members group immediately.

    I have added these users to the group using the bulk edit feature, but am having issues with ONE user. He is able to see the group-restricted forum (bbpress) fine, but unable to see a group-restricted page (it redirects using the Groups 404 Redirect extension). I’ve had him try on his phone and his computer, and in Safari and Firefox with the same results.

    Any suggestions for clearing up this problem?

    • antonio July 14, 2015 at 10:45 am #

      Hi Jeff,
      in Woocommerce->Groups you can select the status needed to add/remove the user to/from a group.
      Antonio B.

  3. Mario August 8, 2015 at 5:36 pm #


    I am looking to restrict access by custom post type. Restricting access on a post-by-post level will soon become difficult to manage.

    Is there a way to easily restrict access to every post created from a specific custom post type? If so, can this be done with a snippet or a plugin/extension that currently exists?

    • antonio August 10, 2015 at 8:28 am #

      Hi Mario,
      you can use this code as reference (you need to change the ‘Premium’ capability and “posts” by your cuatom post type).
      Kind Regards,
      Antonio B.

      • Mario August 10, 2015 at 9:35 pm #

        Antonio, that’s incredible. Thank you so much!

        • antonio August 11, 2015 at 6:41 am #

          Perfect 馃槈

  4. Ryan August 9, 2015 at 12:11 pm #

    Yes.. I have run into an issue with the Groups Plugin and am trying to get assistance…
    I am using a WordPress Theme Called Directory+

    This is basically a business directory theme with features built in to add this functionality. Within the WordPress Admin the theme adds a menu item named “Items” which holds the Business Directory Items/Categories/Locations. For some reason, when I enable the Groups Plugin, this entire “Items” menu disappears from the admin menu. This took me awhile to figure out because I have quite a few plugins. By process of elimination, I was able to determine that when I have the Groups Plugin enabled, this “Items” menu item disappears. As soon as I disable the Groups Plugin, this item comes right back!.

    I am trying to setup the site with WooCommerce Subscriptions to manage members of the organization, whom as part of being a member, receive a page within the business directory for their company. When installing WooCommerce Subscriptions, it says that the Groups Plugin is required so I installed it but then my Business Directory (or “Items”) menu disappeared.

    Please provide any assistance you can… many thanks in advance.

    • kento August 11, 2015 at 12:16 pm #

      Hi Ryan,

      If the items menu disappears, then it might by that you have any restriction set on the root menu item? Otherwise this would be a conflict between the theme and Groups. I would first check if you have any restrictions set and maybe you can ask the theme developer for any guidance on how they are creating the menu to see where a possible conflict may arise.


  5. Denis Miller August 10, 2015 at 10:43 pm #

    Hi, there is a bug :(

    I created the MyPage, set group to ‘newgroup’.
    This group was created.

    Than I went to Groups and deleted newgroup.

    MyPage is disappeared. I see number of pages: 8, but actually I can see only 7, without MyPage.

    I disactivated Groups. And MyPage is there again!


    • antonio August 11, 2015 at 7:05 am #

      Hi Denis,
      I tried that and not occurs to me the same. Please be sure you have the lastest versions.
      Kind regards,
      Antonio B.

  6. Denis Miller August 12, 2015 at 8:17 pm #

    one more page-

    • antonio August 13, 2015 at 8:29 am #

      Hi Denis,
      that’s true, please have a look at this conversation.
      Antonio B.

  7. Kevin August 18, 2015 at 6:00 pm #

    I’m currently using Groups with bbPress and the plugin limits forums like a charm! My one question though, is there a way I can get topics and replies to adopt the forums group?

    Even though forums are limited topics are still visible by all!

    • kento August 28, 2015 at 6:53 am #

      Hi Kevin,

      bbPress uses three different post types for forums, topics and replies. Groups does not relate these based on the forum and thus the access restrictions don’t apply to the related topics or replies. It should be possible to make that work, but it would require an integration of bbPress with Groups for that purpose.


  8. whoaloic August 26, 2015 at 7:03 am #


    I use your plugin in an extranet website.
    Each member is registered manually with its group capabilities.
    I have a mailchimp account and I would like to use RSS driven campaigns.
    I already have mailchimp lists where subscribers are registered manually (I don’t use a subscription form because I want to control which user is allowed to see specific content).
    I mean that I use
    My idea is to create mailchimp RSS driven campaigns per mailchimp list.
    So each list matches with each group.
    For example, I get posts with restrict access “Premium” (or capability “premium_read”) so I would like the mailchimp list “Premium” would receive a RSS driven campaign of posts with “premium_read” capability.
    Is it possible to set a capability as a feed ?

    Thank you very much for your help.

    • antonio August 27, 2015 at 8:25 am #

      Hi whoaloic,
      with this code, the feed posts are filtered by groups. Maybe it can help you.
      Kind regards,
      Antonio B.

      • Aj August 27, 2015 at 2:52 pm #

        I’m interested in this topic as well, however, my problem doesn’t have to do with the filtering of the results (though I may come across that issue in the future). Right now I’m just having a hard time getting MailChimp (or Campaign Monitor) to be able to see the RSS feed when it’s behind the password protection of Groups (by itthinx).

        Has anyone found a way around that? Currently when I try to setup an RSS driven campaign, it errors out saying the feed is not valid. Presumably this is because it is behind the Groups password protection and there currently is no method that MailChimp or Campaign Monitor provides to authenticate the RSS feed request.

        If anyone has any ideas about how to get around this, I would greatly appreciate it!

        • antonio August 28, 2015 at 10:38 am #

          H Aj,
          really I don’t know how to identificate in RSS.
          You can try to disable Groups, to check if the error is generated by this plugin.
          Antonio B.

  9. Rob August 27, 2015 at 8:26 am #

    I want to use the plugin with Woocommerce.
    Can I use the plugin to let sellers sell products on the shop?
    they need to ask to be able to sell products and the site manager need to approve them.
    (you give support here, on the plugin page on WordPress or other place?)

    • antonio August 27, 2015 at 9:07 am #

      Hi Rob,
      sorry, I think it’s not your plugin, I think that you need Woocommerce Product Vendors plugin.
      Kind regards,
      Antonio B.

  10. Jean August 28, 2015 at 8:57 pm #

    Pre-purchase question:

    I know there is a group hierarchy, but does it work too with the post restrictions where you use the shortcodes to put the restricted content inbetween?

    • kento September 1, 2015 at 4:33 pm #

      Hi Jean,

      For example, assume the groups Basic and Advanced which is a child group of Basic. If you use the shortcode [groups_member group="Basic"]Content for members of the Basic group[/groups_member], then a member of the Advanced group which does not belong to the Basic group, will not see the enclosed content. If you want a member of either Basic or Advanced to see the content, you would use [groups_member group="Basic,Advanced"]Content for members of the Basic or Advanced group[/groups_member].


  11. Marcus August 31, 2015 at 1:34 am #

    Does explicit membership in a sub-group give implied membership to the parent group?

    I ask because I have a parent group with a number of subgroups. I would like some content to be visible to users who have membership in any of the sub-groups. It would be easiest if I could simply query membership in the parent group, rather than in each of the sub-groups. To do that, do I need to explicitly assign the user membership in the parent group AND the sub-group? Or is sub-group membership sufficient that a query on parent group membership will return true even if I haven’t explicitly granted that user membership?

    • kento September 1, 2015 at 4:23 pm #

      Hi Marcus,

      It depends … capabilities are inherited through subgroups (see Groups Hierarchy) so if you have protected a page by using a capability that is assigned to a parent group, then a member of the child group will be able to access it. But not the other way round.


  12. Jean September 1, 2015 at 4:49 pm #

    Answer to my own comment, which I can’t see even if I visint the link:


    you said that, assuming the groups Basic and Advanced which is a child group of Basic. Users from Advanced would not be able to see content restricted to Basic. I understand fully.

    But will people from Basic have access to content restricted to Advanced? Meaning that if I create an Admin group and VIP group which is child group of Admin, the users in Admin group will be able to see the content restricted to VIP?

    • antonio September 14, 2015 at 9:58 am #

      Hi Jean,
      in your case, if you have Admin -> VIP (child of Admin).
      Admin’s users can see posts/pages in: Admin
      VIP’s users can see posts/pages in: Admin, VIP
      Kind regards,
      Antonio B.

  13. katerina September 11, 2015 at 1:17 pm #

    Hi, is it possible to redirect a group user after login to a specific page(url)?

    • antonio September 14, 2015 at 7:29 am #

      Hi Katerina,
      you could use the Groups API and login_redirect filter to create your own solution.
      Kind regards,
      Antonio B.

  14. Mark September 12, 2015 at 2:46 am #

    Hi, thanks for your work on this plugin. Is it possible to list groups by parent? Something like [groups_groups parent="1"]? If not, is it sensible for me to modify the plugin and add this?


    • antonio September 14, 2015 at 8:30 am #

      Hi Mark,
      you can use this code ( you need to add it in your functions.php file and use the shortcode: [groups_groups_parent parent_id=”XX”] )
      Kind regards,
      Antonio B.

  15. Andrei G. September 15, 2015 at 9:36 pm #


    I am aware of the Access Restrictions panel that allows you to select groups that ARE allowed access.

    However, what if instead I would like to select only those that ARE NOT allowed access?

    For example, if I have 20 groups and 18 of them have access, I would much rather select the 2 that do not have access instead of having to click through all the 18.

    Any ideas?

    Thank you.

    • antonio September 16, 2015 at 5:36 am #

      Hi Andrei,
      if you want to use negative logic, you can do it using the shortcode [groups_non_member].
      Kind Regards,
      Antonio B.

      • Andrei G. September 16, 2015 at 11:53 am #


        Thanks, I was aware of that shortcode, but I was hoping of something more at a page level. I am using a page builder that doesn’t really allow me to enclose the various building blocks in a shortcode.

        It would be nice to have a checkbox within the Access Restrictions panel that would allow to use the panel as normal OR as a negative logic.

        • antonio September 16, 2015 at 7:27 pm #

          Hi Andrei,
          sorry, right now it is only available with shortcodes.
          Antonio B.

  16. Andrei G. September 15, 2015 at 9:43 pm #


    I know that content can be restricted at a page or page content level, but what about things like widgets that are assigned to certain footer areas?

    For example I would like to show certain user groups a certain contact info that is displayed via a footer widget, and then show a different group some other contact information instead.

    Any ideas?


    • antonio September 16, 2015 at 5:33 am #

      Hi Andrei,
      please have a look at this comment.
      Antonio B.

      • Andrei G. September 16, 2015 at 12:00 pm #


        Thank you, that’s great I will look into it.

  17. Todd Ryks September 24, 2015 at 4:43 pm #

    We’ve purchased the WooCommerce groups and subscriptions. We have a members only area and would like to have a page that displays a list of member contact information. Is that possible with any of your plugins?

    • Kento September 25, 2015 at 9:06 am #

      Hi Todd,

      For this you could protect the page using Groups and include the shortcode provided through for example [groups_list_users group="Registered"] – the information displayed can be extended by modifying the plugin itself.


  18. Paul October 1, 2015 at 8:10 pm #


    We are already using Groups & Groups for WooCommerce, so that when our membership products are purchased, users are dropped into a specific Group and can then be emailed on a targeted basis. If registered users have made no purchase, at the moment they just get standard English language email newsletters.

    Using WPML, we are now going to create additional language versions of the site, but the issue will then be that the registered users will be from different countries and we would like to email them in their native language with coupons etc to sell our memberships.

    With the WooCommerce shortcode ‘billing_country’ we can add this field to the registration page form, so if we then create the necessary “registered-country” groups, can we automatically add users to these when they completes the registration?

    • Kento October 6, 2015 at 8:43 am #

      Hi Paul,

      Groups hooks on the ‘user_register’ action to add a user automatically to the ‘Registered’ group. You could add another action in a similar manner so that the user is added to the group based on the info from the ‘billing_country’ field.


      • Paul October 7, 2015 at 8:58 am #


        Thank you and I have now reviewed the Woocommerce docs about how to do this. Not having done this before though, a couple more questions please:
        1. I add these to our child theme functions.php file?
        2. Woo says there are 2 types of hook – action & filter – so which do we use?
        3. Can you confirm that the hooks will only function on the Register form and NOT the Checkout form, as we have set users completing a purchase to go into a Member group.
        4. Can we also set some functionality so that when Membership Subscriptions expire, the users drop back into the correct new “Registered Country / Language” groups?


        • antonio October 10, 2015 at 11:23 am #

          Hi Paul,
          1.- Yes, you should add your code in this file.
          2.- ‘user_register’ doc page. Here a code how to add new users to Premium group.
          3.- Please have a look at Woocommerce Hooks page.
          4.- Here you have info about subscriptions hooks.
          Kind Regards,
          Antonio B.

  19. Bram October 4, 2015 at 6:11 pm #

    Hi Antonio,

    Is there a way to reverse the access?? So I have two pages, one should only be visible to guests/ unregistered and one i available for the two groups i created.
    I have figured out how to NOT show the page or menulink for the group page. But I am struggeling with Not showing the guest page when someone is logged in in his/her group.

    Can you give me a tip?



    • antonio October 5, 2015 at 2:06 pm #

      Hi Bram,
      you can use Menu Item Visibility Control plugin using this code: current_user_can(‘your_capability’);
      Antonio B.

  20. Bastien October 5, 2015 at 2:33 pm #

    Hi guys,
    We’re using Visual Composer to build our pages and we haven’t found a short and sweet way to use the “[groups_member group="XYZ"] … [groups_member]” shortcode to hide/display content on pages that uses different Visual Composer elements. It like the shortcode conflicts with the other VC shortcodes and doesn’t behave appropriately.

    Would you consider adding a Visual Composer block/element for Groups where we could put every VC element we want to hide/show for a given group? Or do you have maybe a way of using the shortcode in order for all VC blocks within the Groups shortcode in a text element to display/hide appropriately?
    Waiting for your feedback!

    • Kento October 6, 2015 at 9:19 am #

      Hi Bastien,

      There’s an extension which hasn’t been published yet for this. Let me check if I can provide you with a copy so you can test it.


      • Bastien October 8, 2015 at 3:24 pm #

        Hey Kento,

        Thanks for the reply. Do you have any news about this extension?

        Kind regards,

        • Kento October 12, 2015 at 10:10 am #

          Hi Bastien,

          Thanks for following up, not yet but I’ll let you know as soon as possible.


    • whoaloic October 9, 2015 at 10:01 am #

      I second this 馃槈

  21. Craig Damon October 9, 2015 at 12:39 am #

    We have a small problem we purchased your Subscription/Group plugin it’s not working correctly we need to update one of the 3 components but can login into your site with the credentials we created when we bought your product…further we can’t find any documentation and the documentation link in the plugin returns a 404 page not found…Please advise…


    • Kento October 12, 2015 at 11:02 am #

      Hi Craig,

      Jigoshop is distributing old versions of our plugins without our consent. After Jigoshop got new owners last year, we had some initial communication but they simply stopped communicating and paying developer commissions since over a year ago now. Sorry but that’s the situation, they’ve been completely unresponsive and as it seems, in this case they leave their clients without support and sell products they can’t or aren’t willing to maintain.


  22. whoaloic October 12, 2015 at 7:27 am #

    When groups is enabled, I experience an issue of “Connection Lost” (Media library is extremely slow to reach documents).

    When I deactivate groups, all works fine.
    When I deactivate all plugin, except groups, same issue appears.
    I try to switch to default theme, same issue appears.

    Any idea to resolve this please?

    • Kento October 12, 2015 at 10:35 am #


      Have you checked with debugging enabled to see if anything comes up in your site’s wp-content/debug.log ? I have no other notice of what you describe happening on other installations.



  1. Woocommerce Groups by Sales – light | eggemplo | Premium WordPress Plugins - July 2, 2015

    […] Groups by @itthinx (free plugin) […]

  2. Filtering WordPress Feeds | eggemplo | Premium WordPress Plugins - August 27, 2015

    […] you are using Groups by @itthinx and you need to filter the feeds, this code can help you: function my_feed_filter ( […]

  3. » wordpress:How to display the names of users from a specific group with a shortcode? - October 1, 2015

    […] to provide an Answer (unless someone is familiar with this plugin). Hopefully, you already read the documentation and checked the code, […]

Leave a Reply