Groups

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.


Extensions

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’s 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.


Features

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.

Framework

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

Multisite

  • 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

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!

Twitter

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

Introduction

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.

[/groups_member]

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.

[/groups_can]

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:

Groups

Here you can:

  • add groups
  • remove groups
  • assign capabilities to groups

Capabilities

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.

Options

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.


Shortcodes

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


Download

Download the Groups plugin on WordPress.

1,555 Responses to Groups

  1. Rubén March 26, 2015 at 12:30 pm #

    Hello! I use the plugin is Group Pricing. The problem is that it makes me discount on Regular_Price , and must do so on the SALE_PRICE .

    • antonio March 26, 2015 at 3:39 pm #

      Hi Rubén,
      please ask to the plugin author website in eggemplo.com, I am happy to help you there.
      Thanks

  2. Rob Kinnear March 27, 2015 at 1:31 pm #

    Hi – I am having problems with the homepage of my site which keeps showing 404 page not found to non-member when I restrict access to it (fine without any restrictions). All other restricted pages are working fine (am using the Groups 404 redirect to send non-members to the wp-login.php). It seems to work when I redirect to a page or post but not the wp-login. Any ideas of what could be causing this?

    Thanks

    • kento March 27, 2015 at 10:42 pm #

      Hi Rob,

      What you describe sounds like it’s working as expected. If you restrict access to the home and are using the 404 redirect, it should avoid a redirect loop and thus come up with a 404 if you have it redirecting to the home page.

      Cheers

  3. Rob Kinnear March 30, 2015 at 4:33 pm #

    Ok – I would like to build a template that shows a login form when the user in not part of a group but then shows the full content when logged in. Is it possible to show and hide parts of php template code using the groups plugin?
    Thanks…

    • antonio April 1, 2015 at 1:45 pm #

      Hi Rob,
      you can use [groups_member] and [groups_non_member] shortcodes. If you need php code, I hope this can help you as reference:
      $user_id = get_current_user_id();
      if ( $group = Groups_Group::read_by_name( 'Registered' ) ) { // if the Group exists
      if (Groups_User_Group::read( $user_id , $group->group_id )) { // if the user_id belongs to this group
      ....
      }
      }

      Regards,
      Antonio B.

      • Rob Kinnear April 1, 2015 at 2:20 pm #

        Ok – thanks Antonio. Looks like that should help me with what I need!
        Thanks

        • antonio April 1, 2015 at 3:10 pm #

          Perfect ;-)

  4. Karim April 1, 2015 at 6:45 pm #

    Hello,
    We’re using the groups and groups for woocommerce plugin both. I would like to still direct users to the restricted pages vs. 404 (or the 404 redirect plugin forcing them to a single page) which has the logic to only show partial content and then a link to buy access. Is this possible do do on a large scale basis vs. using shortcodes on hundreds of old files? Any help would be very very helpful.

    • kento April 1, 2015 at 6:54 pm #

      Hi Karim,

      You could use a teaser page for each restricted content and put a link to it there, e.g. style it as a “Get Access” button – you could also link to a general Sign-Up page on each of the teasers.

      Would that be an option?

      • Karim April 2, 2015 at 12:59 pm #

        Unfortunately, every single post has the option of being partially viewed. Is there a way or extension that will allow me to stop the 404 redirect (again, not like the 404 extension) BUT still pass the access restriction to the original page? Could I add a new membership group for all or something to that effect?

        • antonio April 8, 2015 at 7:57 am #

          Hi Karim,
          as @Kento says you can create a page with a “Get Access” button. And using Groups 404 redirect set this new page as destination.
          Regards,
          Antonio B.

  5. Karim April 1, 2015 at 7:03 pm #

    We have created that but to get the content etc. we need it to be on the single.php template page. Currently we don’t even get there as it gets redirected to the 404 before hand

  6. Justine April 3, 2015 at 1:31 pm #

    We are looking at this plugin and were wondering if it’s possible to do this:

    When a user logs in, they are redirected to their “user” page – the user page should be different for all users, and users should not be able to access other users’ personal page

    • antonio April 3, 2015 at 9:00 pm #

      Hi Justine,
      To redirect when an user logs in you can use Peter’s Login Direct plugin.
      To restrict access to a page you can use Groups, but in your case you’ll need create a group by user. If you need to create frontend profile pages, maybe you should search in WordPress Plugin directory.
      Regards,
      Antonio B.

  7. Josh April 3, 2015 at 2:57 pm #

    Hello,

    I’m using this plugin already and it’s working great except for 1 major detail. When our customers purchase a product a user profile is created for them. When this user profile is created it is automatically adding them as a member of the group (I only have/need 1 group.) I don’t want them to be automatically added to the group and use it more of a access granted feature. Where once they are approved I can add them to the group manually.

    I went through all the settings and don’t see this option. Please help, thank you.

    • antonio April 3, 2015 at 8:54 pm #

      Hi Josh,
      when a new user is registered, he is added to ‘Registered’ groups.
      If you need to add an user to a group, you can do it in Users->All Users editing the user or with the bulk actions available above the user’s table.
      Regards,
      Antonio B.

  8. Josh April 3, 2015 at 9:11 pm #

    Antonio,

    Thank you for the response, however, I believe you just repeated what I already know…

    As I said up above
    ***********
    I DON’T want them AUTOMATICALLY added to registered. I need to to add them manually, once they have been approved.

    I’m aware of bulk editing and have gone through to remove the ones that are being added. BUT, there is no way to sort my list of retail customers that is 17,000 users long, so I have to scroll through all 17,000 users manually and “look” to see who has been registered.. Very inefficient and time consuming.

    Please tell me that there is a way to not have users automatically “registered.”

    If not, I’m afraid this plugin will not work for me.

    • kento April 3, 2015 at 9:55 pm #

      Hi Josh,

      It seems you’re misunderstanding what he’s trying to say. There is a Registered group to which all users are added automatically. You can’t and don’t need to change that. If you want to add users manually to a certain group, it isn’t the Registered group but a group that you specifically create for that purpose. Once you have created that group, you can proceed to add those you want to it.

      Cheers

  9. Josh April 3, 2015 at 9:12 pm #

    Actually, if I understand you correctly. Can I create a new group called something other than “registered,” and alleviate this problem? Then I can take those that are registered and add them manually to the new group I have created?

  10. Jennifer April 5, 2015 at 2:35 pm #

    Hi there.

    I’m just following up on this thread…
    https://wordpress.org/support/topic/groups-plugin-activation-fatal-error-multisite?replies=2#post-6718793

    We’re very anxious to find a solution to this issue as we have several customers waiting for the functionality. Anything you can do to assist will be greatly appreciated.

    –Jennifer

    • kento April 7, 2015 at 3:48 pm #

      Hi Jennifer,

      Can you please check if your problems persists with the latest version?

      Thanks

  11. Doug April 9, 2015 at 2:58 am #

    I updated the Groups plugin to 1.4.15 which was intended to fix a certain caching issue. Unfortunately, it is cause a caching issue for me. I use WP Rocket (2.5.3 and/or 2.5.4) and with the new version of Groups my protected content does not render at all.

    Thankfully I was able to get the content to render by deactivating my WP Rocket plugin, but I need the performance of WP Rocket’s caching and the CDN I have configured with it.

    Can you look into the incompatibility with WP Rocket?

    If not, is there a way for me to get my hands on a prior version of the Groups plugin so I can return my system to a performant state?

    • kento April 15, 2015 at 2:10 pm #

      What exact settings are you currently using with their plugin? Do they implement wp_cache_get() fully? I’ve tried to access their site but am getting a 502 Bad Gateway …

  12. Rob April 9, 2015 at 1:58 pm #

    Hi, I’m currently using groups with WooCommerce & WooSubscriptions to restrict content in posts.

    I would like users to be able to click on the post but then be redirected (using the groups 404 plugin) to a ‘sign up for access’ page.

    However, when you enforce read access to the posts, all the abilities such as being able to display the featured image, putting the post link in a menu etc, become invisible to non registered users.

    Therefore, at the moment, I’ve been wrapping content in the groups shortcodes to display content depending on the users group. As you can imagine, with lot of posts, this can be quite time consuming.

    -My question :)
    Is it possible to still show non-registered users the menu links, featured image, post title, excerpt etc and then once they try to click on the post, are then redirected to a Sign Up Page.

    Many thanks for your help.
    Rob

  13. Doug April 11, 2015 at 4:45 am #

    The new update doesn’t work with any major caching plugin. I had to turn off WP Rocket due to the conflict. I have since tried W3 Total Cache and WP Super Cache. Both of those result in the same symptoms.

    The symptoms are that when a user attempts to view their course list in WooThemes Sensei (courses are protected by groups), the page returns blank.

    Can you tell me what caching plugins the new Groups update DOES work with?

    • kento April 15, 2015 at 2:06 pm #

      Hi Doug,

      It does work with caching plugins and of course that includes the major ones. Which settings are you using please? Regarding the blank page, do you mean a WSOD or just a 404? You mention W3TC, it works with that plugin and also with Super Cache. Please detail the exact steps that you have taken so we can reproduce any issues you might have experienced, if there’s anything depending on your particular setup, then I’d be very interested in finding out what happens so it can also be taken care of.

      Cheers

  14. golfstrokes April 13, 2015 at 8:35 pm #

    I’ve been having an issue with Groups when combined with WooThemes Sensei. The issues are on two fronts:

    1) Even with the “admin overrides all group restrictions” setting checked, I cannot see any courses with the standard Sensei “mycourses” page. It used to show me all the courses (as if I was a customer), now it render nothing but a blank screen. If I type in the URL for a specific (protected) course, I can see the course; I just don’t get any courses listed with the mycourse page extension.

    2) If I create a user and add them to a group associated with a protected Sensei, it doesn’t grant access to the course. The only way that I have found to give the user access is to generate a sale through woocommerce. Is there a way that I can grant access to these courses without having to process a $0 sale?

    • kento April 15, 2015 at 2:15 pm #

      #1 Please review my previous response regarding WSOD – if that’s what happens, you should enable debugging in WordPress and please post the conents of wp-content/debug.log after trying to access one of the pages where that happens. If there’s an error in your setup then we can check the log to see what is causing it.
      #2 How exactly have you set it up? Please give details about the group and capability used to restrict access and also about the user.

  15. Matthew Keath April 15, 2015 at 11:27 am #

    Hi,

    Is there are way to redirect groups to different pages after they have logged in?

    Thanks :)

  16. Andriu April 15, 2015 at 2:37 pm #

    Hi

    Is it possible to set the plugin up so that a “Group Administrator” (defined by a WP Admin) can manually add new users to his group only?

    Thanks!

    • antonio April 16, 2015 at 8:15 am #

      Hi Andriu,
      in Groups->Options you can set permissions by roles.
      Regards,
      Antonio B.

  17. Aj April 16, 2015 at 2:22 am #

    I had the Groups plugin (1.4.13) installed and running fine but things were getting complicated for me with Groups and Capabilities, so I went back in and simplified things. Now the access restrictions are not working at all. I’ve looked over my settings several times from several different angles and everything looks correct. What am I doing wrong?

    I have a basic Group hierarchy.
    – Admin
    – Corporate
    – Owner
    – GM (All)

    I then created some basic Capabilities.
    – access_all
    – access_owner
    – access_corp
    – access_admin

    I then added the Capabilities to the Groups in reverse order.
    – Registered (created for Groups: Blog Protect)
    — no capabilities
    – GM (All)
    — access_all
    – Owner
    — access_all
    — access_owner
    – Corporate
    — access_all
    — access_owner
    — access_corp
    – Admin
    — access_all
    — access_owner
    — access_corp
    — access_admin

    All seems good, simple and makes sense. Then I started to implement it. I took a Page and added the ‘access_admin (Admin)’ read access restriction. The plugin widget said, “Enforce read access for ‘access_admin (Admin)’. Only groups or users that have one of the selected capabilities are allowed to read this page.”

    I logged in as a ‘GM’ user and the page showed up in the Site Map and was able to viewed. What am I doing wrong?

    In ‘Options’ I have all four of the Capabilities added as well as the default ‘groups_read_post’. I did not add ‘groups_read_post’ to any of the Groups, but I did test adding it and it made no difference.

    Any help would be greatly appreciated. I have since updated Groups to 1.4.15, but the issue still persists.

    • kento April 16, 2015 at 11:38 am #

      Hi, regarding your page which is restricted by access_admin – the user you have used to check access must belong to another group apart from the GM (All) group, otherwise the page would be hidden. Another possibility is that you have caching enabled for logged in users, if that is so, you must disable that because it’s not compatible with group-based access restrictions.

      • EGFS April 16, 2015 at 10:12 pm #

        I left a comment about 10hrs ago, but I still don’t see it in the comments list. Did the comment get submitted successfully?

        • antonio April 17, 2015 at 5:39 am #

          Hi EGFS,
          sorry, your last comment is on 2015/03/13 at 1:31 pm.
          Regards,
          Antonio B.

Leave a Reply