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.

2,157 Responses to Groups

  1. Cliff DesPeaux July 6, 2017 at 7:38 pm #

    Hi Antonio, thank you for the great plugin!

    Do you know if there’s a way to fix this minor UI issue? https://www.dropbox.com/s/p0mjxqw64yhvoxm/chrome_2017-07-06_12-36-40.png?dl=0

    • antonio July 7, 2017 at 6:43 am #

      Thanks Cliff,
      We will review it, thank you for notifying us.
      Kind Regards,
      Antonio B.

  2. Ganesh July 9, 2017 at 7:01 pm #

    Can assign group admin? Who can manage there own group user.
    For example: A Group admin is user 1
    And it has 10 user which user 1 can manage. Like editing, approving, deleting, etc

    • antonio July 13, 2017 at 8:41 am #

      Hi Ganesh,
      from Groups->Options you can set the Permissions. But if you need to change the user’s groups, you need to have access to manage the users, so you need to be Administrator.
      Really there isn’t an option to have a user who is admin only of his group.
      Kind Regards,
      Antonio B.

  3. Rich July 16, 2017 at 7:05 pm #

    Hello,

    How would I create a designated page so that a group member could easily view all the available content for their group. I have read the documentation several times and just don’t see anything that addresses this, unless I’m missing something. Seems like there would be a short code or something that would automatically populate a designated page with all of a particular group’s content.

    • antonio July 17, 2017 at 4:09 pm #

      Hi Rich,
      when an user visits your blog, directly he can only see the content that he has access to.
      Are you using any shortcode ?
      Kind Regards,
      Antonio B.

  4. Yaron Guez July 19, 2017 at 11:51 pm #

    Hi! I just threw together a plugin that extends WP User Query to allow querying by Group IDs. If anyone finds it useful, it’s over here: https://github.com/yaronguez/wp-groups-user-query

    • antonio July 21, 2017 at 7:13 am #

      Hi Yaron,
      Thank you very much for the contribution and share it.
      Kind Regards,
      Antonio B.

  5. Raúl July 27, 2017 at 4:07 pm #

    Hi there I have a question: Using Menu Item Visibility Control plugin how can i hide a item for a specific group ei. “Gold” or/ and “Silver”, not by role, I read in the comments something like “current_user_can(‘read’);” but if I want restrict/hide the item for a Specific Group, which will be the code?.

    • antonio July 28, 2017 at 8:41 am #

      Hi Raúl,
      You can use something like this: current_user_can(‘your_capability’);
      Kind Regards,
      Antonio B.

  6. Loic July 31, 2017 at 7:17 am #

    Hello
    I’m using Wp All Import in my site. Is it possible to import posts with groups restriction?
    Regards

  7. Doc August 1, 2017 at 9:13 am #

    When setting group capabilities and using the parenting functionality i noticed that capabilities a group inherits still shows up in the capabilities list that can be assigned to the group in the editing section.

    Suggestion:
    I think it would be nice if Capabilities aren’t shown when a group already inherits those capabilities from a parent.

    • Kento August 2, 2017 at 6:46 am #

      Hi, many thanks for the suggestion. I think that removing the capability would be too restrictive (you simply might want to add it although the parent already has it). But we could mark them as already inherited, I’ve taken note to include this improvement. Thanks!

      • Doc August 2, 2017 at 8:50 am #

        You have a good point, it might be to restrictive yes. It would be nice tough if the capabilities were marked if they are inherited. Currently i am making a wordpress site where information needs to be managed for groups of users and till this far the groups plugin is working perfectly. Thanks for building a free plugin with these capabilities 😉

        • Kento August 5, 2017 at 2:22 pm #

          Many thanks for your suggestion, and I’m always happy to hear that it’s useful 🙂

  8. John Romaine August 3, 2017 at 1:27 pm #

    Hi Antonio,
    I am currently testing this plugin and it works very well. Thanks for producing such great software. I do however have a question that I’m hopeful you can help me with.

    Id like to keep restrictions limited to users and groups in the back end, but have the front end completely open to the public. In other words, I only want restrictions applied to users in the back end, so that they can only update, delete and edit content that they have access to, but at the front end (what the actual public sees) everything should be viewable.

    Does that make sense?

    At the moment when I create a piece of content and assign it to a certain group, it disappears from the front end because members of the public aren’t of course members of any groups.

    I would happily pay to have this feature added.

    Thank you.

    • Kento August 5, 2017 at 2:40 pm #

      Hi John,

      Many thanks for your feedback and question about the plugin. What you’re asking sure makes sense to me, in fact, it’s part of what I’m currently working on. Can’t give an ETA on these features yet except I’d like to see these things available ASAP … I assume you’re working on a project where you need to have more fine-grained access restrictions related to who can edit what – just where you already show content to the public openly, instead of hiding it on the back end, to restrict who is allowed to edit, delete, update etc. makes more sense in general applications.

      Do you have a schedule for your project?

      Cheers

      • John Romaine August 5, 2017 at 10:30 pm #

        Hi Kento,
        Thanks for the response mate I appreciate it.

        Answer to your comments and questions below…

        it’s part of what I’m currently working on. Can’t give an ETA on these features yet except I’d like to see these things available ASAP …

        Excellent, sounds great.

        I assume you’re working on a project where you need to have more fine-grained access restrictions related to who can edit what – just where you already show content to the public openly, instead of hiding it on the back end, to restrict who is allowed to edit, delete, update etc. makes more sense in general applications.

        The plugin does exactly what I need it to in the back end, being able to assign content to specific users and groups is fantastic, I would just like the front end completely open. To both the public (regular web visitors) AND those that have restrictions in the back end.

        For eg. I am using your plugin on a car site. Ive created a number of groups, and assigned users that are knowledgeable about certain types of cars in those groups. So members that are experienced and knowledgeable about 1965 Ford Falcons, can contribute and control content about 1965 Ford Falcons, but not have access to any other types of cars in the back end, HOWEVER they can see ALL the cars on the front end. Members of the public of course can see everything on the front end as well.

        In other words, restrictions are applied as intended by the plugin in the back end, but there are NO restrictions at all on the front end.

        Do you have a schedule for your project?

        At the moment Im doing research and testing etc, but I would like to get this over to my web guy within a week if possible.

        Thank you.

        • Kento August 17, 2017 at 4:03 pm #

          Hi John,

          Thanks for your comments, from what you explain, what I understand is that this is basically restricting who can control content on the back end, although that content is publicly visible.

          The difference in what I’m working on and how you have outlined it, is that in the model I consider, users won’t be locked out completely from viewing things on the back end (unless it’s protected content), but they wouldn’t be able to create, edit or delete stuff unless they have the right permissions.

          It’s been almost a couple of weeks since you posted (and sorry it took so long to reply) – I imagine you’ve moved further with your project now. Unfortunately I don’t see a chance of providing you with something you could at least test for your purposes shortly. Sorry this doesn’t help much for now …

          Cheers

  9. Sergio August 8, 2017 at 9:53 am #

    Hola Antonio,

    If a post / page is restricted to a group_A, then only the users on this group_A or group_A_1 / group_A_2 … (children of group_A) can access this post / page.

    But with the use of shortcodes, it works the same?

    [groups_member group="group_A"]
    some text example…
    [/groups_member]

    Now, children of group_A, group_a_1 and group a_2 can see this restrict content or not?
    Or only can see this text the users off the group A? and their children can’t see this content?
    If cannot see, there is a solution / arguments to add in the shortcode to make it possible?

    Sergio

    Thanks,
    Sergio

    • antonio August 8, 2017 at 2:59 pm #

      Hi Sergio,
      Using the shortcode, you need to indicate all the groups, something like this:
      [groups_member group="group_A,group_A_1,group_A_2"]
      some text example…
      [/groups_member]

      We have noted it as a shortcode improvement, I’m sorry I can not give you a delivery time.
      Kind Regards,
      Antonio B.

  10. Neil August 12, 2017 at 10:33 am #

    Hi Antonio,

    Is it possible to have all content created by users to be only visible within their group automatically – without selecting the privacy options? Or to ask it another way, how can I programatically set certain custom post types to be restricted to members of the author’s group?

    • antonio August 14, 2017 at 9:25 am #

      Hi Neil,
      Using the Groups API, you can check the current user capability/group, so when a post is saved, restrict this.
      Maybe this code can help you as reference.
      Kind Regards,
      Antonio B.

  11. rulo August 15, 2017 at 9:35 pm #

    Hi!! There:

    I Have a question, How can I display a List of members of a specific group. e.i. The name of the group is: “Silver”, how can I display a List of members of this group. I Had installed the plugin: https://github.com/eggemplo/groups-list-users/blob/master/groups-list-users.php ,but after activate it, nothing happened, What can I do ¿?.

    • antonio August 16, 2017 at 4:37 am #

      Hi Rulo,
      After install the plugin, you need to use the shortcode [groups_users_list_group group_id=”xx” /] You need to change xx for your group_id (integer number)
      Kind Regards,
      Antonio B.

  12. RuLO August 16, 2017 at 5:00 am #

    Awesome! Thank you! 😃

Leave a Reply